Linux系统jq命令格式,[linux命令] jq - JSON处理

jq可以对json数据进行分片、过滤、映射、转换,jq可以像sed、awk、grep等命令一样轻松的处理文本;jq使用c语言编写,没有运行时依赖,可以下载预编译的二进制文件复制到远程机器上运行;使用jq可轻松的将现有的数据格式转换为你想要的数据格式。

一、用户手册mac下安装brew install jq

二、使用示例

jq使用方法jq [options]  [file...]

其中,options为jq执行的参数,filter为过滤的符号,file为被执行对象(可同时执行多个对象),当不指定文件时,以命令行用户输入作为jq输入。2.1 jq执行参数(options)

参数功能范例-c将输出按压缩格式展示(默认情况下按JSON格式化展示)jq -c . test.txt

-C将输出按带颜色的JSON格式化展示或到管道jq -C . test.txt

-M禁止输出按带颜色的JSON格式化展示或到管道jq -M . test.txt

-S按JSON字段的顺序输出jq -S . test.txt

全部参数见用户操作手册2.2 jq过滤功能

“.” : 输出自己,搭配"[]“可处理数组元素,”[n1:n2]"指定输出数组的范围,也可根据JSON多层结果做级联处理。MacBook-Pro-6:test jerry$ jq -c . test.txt

[{"name":"JSON","good":true},{"name":"XML","good":false}]

MacBook-Pro-6:test jerry$ jq .[] test.txt

{

"name": "JSON",

"good": true

}

{

"name": "XML",

"good": false

}

MacBook-Pro-6:test jerry$ jq .[1:2] test.txt

[

{

"name": "XML",

"good": false

}

]

MacBook-Pro-6:test jerry$ jq .[1] test.txt

{

"name": "XML",

"good": false

}

MacBook-Pro-6:test jerry$ jq .[1].name test.txt

"XML"

MacBook-Pro-6:test jerry$

“,” : 可对输入执行多个过滤条件并输出结果MacBook-Pro-6:test jerry$ jq -c . test2.txt

{"user":"stedolan","projects":["jq","wikiflow"]}

MacBook-Pro-6:test jerry$ jq '.user, .projects[1]' test2.txt

"stedolan"

"wikiflow"

“|” : 管道可像Unix管道一样,将管道左侧的输出作为管道右侧的输入,当管道左侧有多个输出时,会按顺序依次执行管道右侧的命令MacBook-Pro-6:test jerry$ jq -c '.' test.txt

[{"name":"JSON","good":true},{"name":"XML","good":false}]

MacBook-Pro-6:test jerry$ jq '.[] | .name' test.txt

"JSON"

"XML"

“()” : 组合操作符MacBook-Pro-6:test jerry$ jq '(. + 3) * 2'

1

8 2.3 类型和值

“[]” : 构建数组MacBook-Pro-6:test jerry$ jq -c '.' test2.txt

{"user":"stedolan","projects":["jq","wikiflow"]}

MacBook-Pro-6:test jerry$ jq '[.user, .projects[1]]' test2.txt

[

"stedolan",

"wikiflow"

]

“{}” : 构建对象MacBook-Pro-6:test jerry$ jq -c '.' test2.txt

{"user":"stedolan","projects":["jq","wikiflow"]}

MacBook-Pro-6:test jerry$ jq '{A : .user, B : .projects[]}' test2.txt

{

"A": "stedolan",

"B": "jq"

}

{

"A": "stedolan",

"B": "wikiflow"

} 2.4 内建函数

“keys” : 应用于对象时,返回对象中的key组合,按字母顺序排列;应用于数组时,返回数组中对象的下标。MacBook-Pro-6:test jerry$ jq -c '.' test.txt

[{"name":"JSON","good":true},{"name":"XML","good":false}]

MacBook-Pro-6:test jerry$ jq 'keys' test.txt

[

0,

1

]

MacBook-Pro-6:test jerry$ jq '.[1] | keys' test.txt

[

"good",

"name"

]

“has(key)” : 应用于对象时,返回对象是否有指定key;应用于数组时,返回是否有指定下标。MacBook-Pro-6:test jerry$ jq -c '.' test.txt

[{"name":"JSON","good":true},{"name":"XML","good":false}]

MacBook-Pro-6:test jerry$ jq '.[1] | has("name")' test.txt

true

MacBook-Pro-6:test jerry$ jq 'has(12)' test.txt

false

“del(path_expression)” : 删除对象的指定key或数组的指定下标对象(不会对源文件进行删除)MacBook-Pro-6:test jerry$ jq -c '.' test.txt

[{"name":"JSON","good":true},{"name":"XML","good":false}]

MacBook-Pro-6:test jerry$ jq 'del(.[].name)' test.txt

[

{

"good": true

},

{

"good": false

}

]

MacBook-Pro-6:test jerry$ jq 'del(.[1])' test.txt

[

{

"name": "JSON",

"good": true

}

]

更多内建函数见用户手册2.5 条件和比较

略2.6 正则表达式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值