linux-shell命令处理json数据

2022-10-11 20:27:41 134 0
魁首哥

0x00 jq介绍

jq是一个轻量级的灵活的处理 json 对象的命令。支持 linux 、windows。

0x01 二进制安装

wget -O jq

chmod +x ./jq

cp jq /usr/bin

0x02 使用 yum 安装

yum -y install epel-release

yum -y install jq

0x03 使用

1、格式化输出

curl 2>> /dev/null | jq

2、获取指定字段的数据

curl 2>> /dev/null | jq -r ‘.code,.data.ip,.data.country’

0

8.8.8.8

美国

3、提取指定的字段保存成 csv 文件

curl 2>> /dev/null | jq -r ‘[(.code|tostring),.data.ip,.data.country]|join(“,”)’

0,8.8.8.8,美国

注释:

.code|tostring:取code字段的值并转化为string类型

[]:数组

join(“,”):数组中的元素通过”,”连接。

4、csv转换成json 字符串

cat /tmp/1.csv

0,8.8.8.8,美国

0,8.8.8.7,美国

0,8.8.2.7,美国

0,81.8.2.7,土耳其

jq -R ‘split(“,”)|{“code”:.[0],”ip”:.[1],”country”:.[2]}’ /tmp/1.csv

{

“code”: “0”,

“ip”: “8.8.8.8”,

“country”: “美国”

}

{

“code”: “0”,

“ip”: “8.8.8.7”,

“country”: “美国”

}

{

“code”: “0”,

“ip”: “8.8.2.7”,

“country”: “美国”

}

{

“code”: “0”,

“ip”: “81.8.2.7”,

“country”: “土耳其”

}

5、 -c/–compact-output:jq 默认是pretty-prints JSON 输出,加上这个参数,一行一个json对象。

jq -R -c ‘split(“,”)|{“code”:.[0],”ip”:.[1],”country”:.[2]}’ /tmp/1.csv

{“code”:”0″,”ip”:”8.8.8.8″,”country”:”美国”}

{“code”:”0″,”ip”:”8.8.8.7″,”country”:”美国”}

{“code”:”0″,”ip”:”8.8.2.7″,”country”:”美国”}

{“code”:”0″,”ip”:”81.8.2.7″,”country”:”土耳其”}

6、复杂json查询

complexJson='{“uid”:”777″,”nameInfo”:[{“firstName”:”Jim”,”lastName”:” Green “},{“firstName”:”Lei”,”lastName”:”Li”}]}’

echo ${complexJson} |jq

{

“uid”: “777”,

“nameInfo”: [

{

“firstName”: “Jim”,

“lastName”: “Green”

},

{

“firstName”: “Lei”,

“lastName”: “Li”

}

]

}

echo ${complexJson} |jq -r ‘.nameInfo[].lastName’

结果:

Green

Li

注释:

.nameInfo[].lastName是获取.nameInfo[] json array中每个json object的lastName字段。

收藏
分享
海报
0 条评论
134
上一篇:蓝天采集器使用教程一:本地安装搭建蓝天采集器 下一篇:PHP反序列化之私有变量与受保护变量的特点

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码