Linux下对json文件进行查看-jq

本文介绍了Linux下的jq命令,这是一个用于查看和解析JSON文件的工具。通过yum安装jq后,可以使用简单的JSONPath语法访问字段。示例包括访问对象属性、数组属性,以及如何将JSON转换为CSV格式,涉及到的命令包括cat、jq、sed等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jq是一个查看和解析json文件的linux命令工具 ,centos直接yum install -y jq ,查看字段可用简单的jsonpath去访问;

本文测试数据:

{ "name":"John", "age":30, "car":null,"phone":["1"] }
{ "name":"zhang", "age":30, "car":null,"behavior":[{"say":"hello"},{"eat":"rice"}] }

常用方法:

cat file | jq .  用cat打开命令后,通过管道重定向到jq ,jq 解析json 根节点 "."

 

1.访问对象的属性 cat file | jq .name 

2.访问数组属性 cat file | jq .behavior

没有对应的属性就返回null,对null返回就在那一行报错

注:访问具体的数组元素要对对应的字段加单引号

使用jq命令,将json转成csv文件:

{ "name":"John", "age":30,"car":null, "behavior":"eat" }
{ "name":"zhang", "age":30,"car":null, "behavior":"say" }

我们最终想要的是:

John,30,eat
zhang,30,say

先考虑将其给jq :cat file | jq .

由于我们需要将其弄成一行,并使用某种分隔符分开 :jq 本身可以将数组中各个元素使用\t(制表符)分开,所以我们考虑 cat file | jq '[ ]' 将我们需要的字段使用jsonpath指定到 前面 表达式中的 [ ] 中 所以变成了

cat file | jq '[ .name,.age,.car,.behavior]'

使用jq内置的@tsv 进行制表符分隔处理 cat test.json | jq '[ .name,.age,.behavior ] | @tsv'

接着使用sed将制表符替换成,并且 ,   cat test.json | jq '[ .name,.age,.behavior ] | @tsv' | sed 's/\\t/,/g'

最后去掉 多余的双引号:

csv的格式就做出来了,然后直接重定向到你的文件中就可以了!

### 如何在Linux中使用命令行工具编辑JSON文件 #### 使用 `jq` 工具 `jq` 是一款强大的 JSON 处理工具,能够在 Linux 命令行环境中高效地解析、修改和生成 JSON 数据[^1]。通过安装并熟练运用该工具,可以实现对 JSON 文件的各种操作。 要安装 `jq`,可以在基于 Debian 的系统(如 Ubuntu)上运行以下命令: ```bash sudo apt-get update && sudo apt-get install jq ``` 对于 Red Hat 或 CentOS 系统,则可执行如下命令完成安装: ```bash sudo yum install epel-release && sudo yum install jq ``` 一旦成功安装了 `jq`,就可以利用其功能来编辑 JSON 文件。例如,假设有一个名为 `data.json` 的文件,其中包含以下内容: ```json { "name": "Alice", "age": 25, "city": "New York" } ``` 如果想更改字段 `"age"` 的值为 `30` 并保存到新文件中,可以这样操作: ```bash jq '.age = 30' data.json > new_data.json ``` 为了直接覆盖原文件的内容,可以通过管道符结合其他命令达成目标: ```bash jq '.age = 30' data.json | sponge data.json ``` 这里使用的 `sponge` 来自 GNU `moreutils` 软件包,用于缓冲标准输入直到读取结束再写入文件,从而安全地更新原始文件[^2]。 另外,还可以删除某些键或者添加新的键值对。比如移除 `"city"` 字段以及新增一个叫 `"job"` 的键及其对应的字符串值 `"Engineer"`: ```bash jq 'del(.city) | . += {"job":"Engineer"}' data.json > updated_data.json ``` 以上展示了如何借助 `jq` 这一优秀的命令行工具,在不离开终端的情况下灵活地调整 JSON 文档中的各项属性。 #### 其他可能的选择 除了 `jq`,还有其他的命令行工具可用于处理 JSON 数据,像 Python 结合 `-c` 参数调用内置库 json 实现快速脚本编写;Perl 和 Ruby 同样具备相应的模块支持这样的任务需求。不过这些方法通常较之专门设计的 `jq` 更加冗长复杂一些[^2]。 ```python import sys, json obj = json.load(sys.stdin) obj['new_key'] = 'value' print(json.dumps(obj)) ``` 此段代码片段演示了一个简单的例子——从标准输入接收 JSON 对象后增加一个新的键值对然后再打印出来。虽然这需要更多编程背景知识才能有效应用,但对于熟悉相应语言的人来说也是一种可行方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值