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字段。
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~