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

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

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的格式就做出来了,然后直接重定向到你的文件中就可以了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值