当前位置: 首页 > article >正文

Linux gron 命令使用详解

简介

gron 是一个独特的命令行工具,用于将 JSON 数据转换为离散的、易于 grep 处理的赋值语句格式。它的名字来源于 “grepable on” 或 “grepable JSON”,主要解决在命令行中处理复杂 JSON 数据的难题。

核心价值

gron 的核心是将 JSON 数据展平为类似 json.path.to.key = value; 的格式

  • 简化 JSON 处理:将嵌套的 JSON 结构扁平化为易于搜索的格式

  • 增强 grep 能力:使标准文本工具能高效处理 JSON 数据

  • 可逆转换:可将处理后的数据还原为原始 JSON

安装

  • Ubuntu/Debian
sudo apt install gron
  • CentOS/RHEL
sudo yum install epel-release
sudo yum install gron
  • macOS
brew install gron
  • 从源码安装 (Go)
go install github.com/tomnomnom/gron@latest

常用选项

  • -c, --color:强制彩色输出(即使非终端环境)。

  • -i, --indent:指定缩进空格数(默认 2)。

  • -n, --no-sort:不排序输出结果。

  • -u, --ungron:将 gron 格式转回 JSON

  • --json:等同于 --ungron,但更符合语义。

  • -v, --values: 仅输出值的部分(不包括路径)

  • -s, --stream: 将每行输入视为单独的 JSON 对象处理

示例用法

data.json 文件示例:

{"name": "Alice","age": 30,"pets": [{"name": "Rex", "type": "dog"},{"name": "Whiskers", "type": "cat"}],"address": {"city": "New York","zip": "10001"}
}
转换 JSON 为 gron 格式
gron data.json

输出:

json = {};
json.name = "Alice";
json.age = 30;
json.pets = [];
json.pets[0] = {};
json.pets[0].name = "Rex";
json.pets[0].type = "dog";
json.pets[1] = {};
json.pets[1].name = "Whiskers";
json.pets[1].type = "cat";
json.address = {};
json.address.city = "New York";
json.address.zip = "10001";
搜索特定值
gron data.json | grep "zip"

输出:

json.address.zip = "10001";
恢复为 JSON 格式 (–ungron)
gron data.json | grep "pets" | gron --ungron

输出:

{"pets": [{"name": "Rex","type": "dog"},{"name": "Whiskers","type": "cat"}]
}
使用自定义变量名 (-s)
gron -s data data.json

输出:

data = {};
data.name = "Alice";
流式处理大型文件 (–stream)
curl -s https://api.example.com/large-data | gron --stream
指定输出格式 (-j, --json)
gron data.json -j | grep "name"

输出:

$.name = "Alice";
$.pets[0].name = "Rex";
$.pets[1].name = "Whiskers";
组合 awk 处理数据
gron data.json | awk '/pets/ && /type/ {print $3}'

输出:

"dog"
"cat"
修改并恢复数据
gron data.json | sed 's/"New York"/"Boston"/' | gron --ungron
处理多个文件
gron file1.json file2.json | grep "error"
使用 jq 风格路径
gron -j data.json | grep 'pets.*name'

输出:

$.pets[0].name = "Rex";
$.pets[1].name = "Whiskers";
调试 API 响应
curl -s https://api.github.com/users/octocat | gron | grep "company"
处理复杂配置文件
gron config.json | grep "database.password"
搜索嵌套值
gron data.json | grep "pets.*cat"
提取所有键名
gron data.json | awk -F '.' '{print $2}' | sort | uniq
处理压缩数据
zcat large.json.gz | gron --stream | grep "error"
颜色高亮输出
gron data.json | grep --color=auto "name"

相关文章:

Linux gron 命令使用详解

简介 gron 是一个独特的命令行工具,用于将 JSON 数据转换为离散的、易于 grep 处理的赋值语句格式。它的名字来源于 “grepable on” 或 “grepable JSON”,主要解决在命令行中处理复杂 JSON 数据的难题。 核心价值 gron 的核心是将 JSON 数据展平为类…...

Nginx--手写脚本压缩和切分日志(也适用于docker)

原文网址:Nginx--手写脚本压缩和切分日志(也适用于docker)_IT利刃出鞘的博客-CSDN博客 简介 本文介绍nginx如何手写脚本压缩和切分日志。 1.创建切分日志的脚本 创建脚本文件:/work/tmp/nginx-log_sh(后边要用run-…...

OpenCv高阶(十八)——dlib人脸检测与识别

文章目录 一、dlib库是什么?二、opencv库与dlib库的优缺点对比1、opencv优缺点2、dlib库优缺点 三、dlib库的安装1、在线安装2、本地安装 四、dlib库的人脸检测器1. 基于 HOG 的检测器2. 基于 CNN 的检测器 五、dlib人脸检测的简单使用1、导入必要库2、初始化人脸检…...

中山大学无人机具身导航新突破!FlightGPT:迈向通用性和可解释性的无人机视觉语言导航

作者:Hengxing Cai 1 , 2 ^{1,2} 1,2, Jinhan Dong 2 , 3 ^{2,3} 2,3, Jingjun Tan 1 ^{1} 1, Jingcheng Deng 4 ^{4} 4, Sihang Li 2 ^{2} 2, Zhifeng Gao 2 ^{2} 2, Haidong Wang 1 ^{1} 1, Zicheng Su 5 ^{5} 5, Agachai Sumalee 6 ^{6} 6, Renxin Zhong 1 ^{1} …...

WIN11+CUDA11.8+VS2019配置BundleFusion

参考: BundleFusion:VS2019 2017 ,CUDA11.5,win11,Realsense D435i离线数据包跑通,环境搭建 - 知乎 Win10VS2017CUDA10.1环境下配置BundleFusion - 知乎 BundleFusionWIN11VS2019 CUDA11.7环境配置-CSDN博客 我的环境:Win 11…...

WPF prism

Prism Prism.Dryloc 包 安装 Nuget 包 - Prism.DryIoc 1. 修改 App.xaml 修改 App.xaml 文件&#xff0c;添加 prism 命名空间, 继承由 Application → PrismApplication&#xff0c;删除默认启动 url, StartupUri“MainWindow.xaml” <dryioc:PrismApplicationx:Class…...

实时同步缓存,与阶段性同步缓存——补充理解《补充》

根据 Redis 缓存的数据与 DBMS 中数据的同步性划分&#xff0c;缓存一般可划分为两类&#xff1a;实时同步缓存&#xff0c;与阶段性同步缓存。 实时同步缓存是指&#xff0c;DBMS 中数据更新后&#xff0c;Redis 缓存中的存放的相关数据会被立即清 除&#xff0c;以促使再有对…...

[Redis] Redis:高性能内存数据库与分布式架构设计

标题&#xff1a;[Redis] 浅谈分布式系统 水墨不写bug 文章目录 一、什么是Redis&#xff1f;一、核心定位二、核心优势三、典型应用场景四、Redis vs 传统数据库 二、架构选择与设计1、单机架构&#xff08;应用程序 数据库服务器&#xff09;2、应用程序和数据库服务器分离3…...

Mobaxterm解锁Docker

Mobaxterm是一款功能强大的终端模拟器和SSH客户端&#xff0c;它支持Windows、Linux和Mac操作系统&#xff0c;对于使用Docker的开发者和运维人员来说&#xff0c;Mobaxterm是一个非常有用的工具。本文将深入解析Mobaxterm&#xff0c;并分享一些使用Docker时的高效技巧。 Mob…...

React 第四十九节 Router中useNavigation的具体使用详解及注意事项

前言 useNavigation 是 React Router 中一个强大的钩子&#xff0c;用于获取当前页面导航的状态信息。 它可以帮助开发者根据导航状态优化用户体验&#xff0c;如显示加载指示器、防止重复提交等。 一、useNavigation核心用途 检测导航状态&#xff1a;判断当前是否正在进行…...

【JavaEE】Spring事务

目录 一、事务简介二、Spring事务的实现2.1 事务的操作2.2 分类2.2.1 Spring编程式事务2.2.2 Spring 声明式事务 Transactional2.2.2.1 Transactional 详解2.2.2.1.1 rollbackFor2.2.2.1.2 Isolation2.2.2.1.3 propagation 一、事务简介 事务&#xff1a;事务是⼀组操作的集合…...

Flink 状态管理深度解析:类型与后端的全面探索

在流处理场景中,数据往往是连续且无界的,为了准确处理这些数据并维持计算的连续性,Flink 引入了状态管理机制。Flink 的状态管理包含状态类型和状态后端两大部分,它们相辅相成,共同为作业的可靠性、容错性和性能提供保障。接下来,我们将深入探究 Flink 状态管理中状态类型…...

Android15 userdebug版本不能remount

背景描述&#xff1a; 最近调试Android Vendor Hal的时候发现一个奇怪的现象: android userdebug版本刷到设备中&#xff0c;执行adb root没提示错误&#xff0c;但是没有获取到root权限。 Android设备运行的系统版本有三种情况&#xff1a;user版本、userdebug版本和eng版本…...

R包安装报错解决案例系列|R包使用及ARM架构解决data.table安装错误问题

有不少同学是Mac系统的&#xff0c;分析过程中会发现部分R包总是安装不成功&#xff0c;这是因为部分R包基于windowsx86架构编译的&#xff0c;最常见的就是含 C/C/Fortran 的包&#xff0c;对于初学者都是建议linux和win去做&#xff0c;Windows 通常直接安装预编译好的二进制…...

k8s Headless Service

Kubernetes 无头服务&#xff08;Headless Service&#xff09;配置与使用场景 1.无头服务概述 无头服务&#xff08;Headless Service&#xff09;是 Kubernetes 中的一种特殊服务类型&#xff0c;它**不分配集群 IP&#xff08;ClusterIP&#xff09;&#xff0c;而是直接暴露…...

Linux上安装MongoDB

目录 一、在Linux系统安装MongoDB服务器 1、下载MongoDB 2、上传MongoDB并解压 3、创建必要目录 4、配置环境变量 5、创建配置文件 6、启动命令 7、验证安装 二、在Linux系统安装MongoDB客户端Shell 1、下载MongoDB Shell 2、上传MongoDB Shell并解压 3、配置环境变…...

Redis最佳实践——安全与稳定性保障之访问控制详解

Redis 在电商应用的安全与稳定性保障之访问控制全面详解 一、安全访问控制体系架构 1. 多层级防护体系 #mermaid-svg-jpkDj2nKxCq9AXIW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jpkDj2nKxCq9AXIW .error-ico…...

【华为开发者空间 x DeepSeek】服务器运行Ollama并在本地调用

文章概述 本文介绍了如何在 华为开发者空间 中快速部署并使用 Ollama 模型运行框架&#xff0c;并结合 deepseek-r1 模型进行本地或远程交互推理。内容涵盖环境准备、模型配置、网卡绑定、内网穿透、API调用等多个环节&#xff0c;适合希望在华为云上快速搭建本地类大模型推理…...

Halcon

regiongrowing — Segment an image using regiongrowing. get_obj_class:获取图像的类别名 get_region_points&#xff1a;获取区域的像素 get_contour_xld&#xff1a;获取xld像素点坐标 get_polygon_xld&#xff1a;获取多边形的数据 get_region_polygon:计算一个区域的…...

STM32之IIC(重点)和OLED屏

内部集成电路概述 基本概念 内部集成电路&#xff08;Inter Integrated Circuit&#xff09;的简称叫做IIC或者I2C&#xff0c;是一种简单的、半双工同步通信的串行通信接口&#xff0c;IIC总线是上世纪80年代&#xff08;1982年&#xff09;由飞利浦公司设计出来&#xff0c…...

学习海康VisionMaster之表面缺陷滤波

一&#xff1a;进一步学习了 今天学习下VisionMaster中的表面缺陷滤波&#xff1a;简单、无纹理背景的表面缺陷检测&#xff0c;可以检测表面的异物&#xff0c;缺陷&#xff0c;划伤等 二&#xff1a;开始学习 1&#xff1a;什么表面缺陷滤波&#xff1f; 表面缺陷滤波的核心…...

游戏引擎学习第314天:将精灵拆分成多个层

回顾并为今天的工作做准备 我们今天继续昨天开始的工作&#xff0c;现在我们要回到渲染中处理 Z 值的最终环节。我们目前已经有一个我们认为还算合理的排序方式&#xff0c;虽然可能还需要在接下来的过程中进行一些调整&#xff0c;但总体上已经有了一个明确的方向。 我们已经…...

【学习笔记】深度学习-梯度概念

一、定义 梯度向量不仅表示函数变化的速度&#xff0c;还表示函数增长最快的方向 二、【问】为什么说它表示方向&#xff1f; 三、【问】那在深度学习梯度下降的时候&#xff0c;还要判断梯度是正是负来更新参数吗&#xff1f; 假设某个参数是 w&#xff0c;损失函数对它的…...

【数据结构】图的存储(邻接矩阵与邻接表)

图的存储结构 因为图中既有节点&#xff0c;又有边(节点与节点之间的关系)&#xff0c;因此&#xff0c;在图的存储中&#xff0c;只需要保存&#xff1a;节点和边关系即可。 节点保存比较简单&#xff0c;只需要一段连续空间即可&#xff0c;那边关系该怎么保存呢&#xff1…...

tomcat yum安装

使用yum安装 yum install -y java-1.7.0-openjdk* tomcat* --disablerepoepel## java-1.7.0-openjdk* 注意&#xff1a;最终安装的是java-1.8.0版本## --disablerepoepel 禁用&#xff1a;EPEL源&#xff0c;防止版本冲突 java -version (2) 启停&#xff1a;Tomcat 7 s…...

【Elasticsearch】suggest_mode

suggest_mode 是 Elasticsearch 中 term suggester 和 phrase suggester 的一个参数&#xff0c;用于控制建议的生成方式。它有以下三种模式&#xff1a; 1. missing&#xff1a;默认值。仅对索引中不存在的词项提供建议。如果输入的词已经在索引中存在&#xff0c;则不会生成建…...

数据库只更新特定字段的两种方式(先读后写 vs. 动态组织 SQL)-golang SQLx 实现代码(动态组织 SQL)

文章目录 数据库只更新特定字段的两种方式&#xff08;先读后写 vs. 动态组织 SQL&#xff09;go语言例子使用GORM的示例&#xff08;最常用的Go ORM库&#xff09;使用SQLx的两种更新方式实现golang SQLx 实现代码&#xff08;动态组织 SQL&#xff09; 数据库只更新特定字段的…...

从翻译后修饰角度解析人工合成途径与底盘细胞的适配性-文献精读136

Compatibility between synthetic pathway and chassis cells from the viewpoint of post-translational modifications 从翻译后修饰角度解析人工合成途径与底盘细胞的适配性 摘要 揭示工程化设计的人工合成途径与底盘细胞整体代谢网络的交互作用及适配性机制是合成生物学研…...

Cesium快速入门到精通系列教程一

一、打造第一个Cesium应用 1、官方渠道下载Cesium&#xff08;可选择历史版本&#xff09; ​​GitHub Releases页面​​ 访问 Cesium GitHub Releases&#xff0c;此处列出了所有正式发布的版本。 通过标签&#xff08;如 v1.95.0&#xff09;选择目标版本&#xff0c;下载…...

[Windows] 剪映 视频编辑处理

附链接&#xff1a;夸克网盘分享&#xff08;点击蓝色字体自行保存下载&#xff09;...