jq就像sed一样处理JSON格式的数据,你可以使用它实现sed,awk,grep有的切片,过滤,转换数据结构的一些功能。
安装
[root@ceph-osd1 ~] # yum install jq
[root@ceph-osd1 ~]# jq --version
jq-1.5
例子:
原来的返回格式:
[root@ceph-osd1 ~]# ceph mon_status
{"name":"ceph-osd1","rank":0,"state":"leader","election_epoch":132,"quorum":[0,1,2],"outside_quorum":[],"extra_probe_peers":[],"sync_provider":[],"monmap":{"epoch":8,"fsid":"21ed0f42-69d2-450c-babf-b1a44c1b82e4","modified":"2017-01-17 14:42:49.383110","created":"2016-11-08 17:06:39.164349","mons":[{"rank":0,"name":"ceph-osd1","addr":"192.168.1.141:6789//0"},{"rank":1,"name":"ceph-osd2","addr":"192.168.1.142:6789//0"},{"rank":2,"name":"ceph-osd3","addr":"192.168.1.143:6789//0"}]}}
使用jq格式化后返回的格式,很明显可读性就很强了。
[root@ceph-osd1 ~]# ceph mon_status | jq .
{
"name": "ceph-osd1",
"rank": 0,
"state": "leader",
"election_epoch": 132,
"quorum": [
0,
1,
2
],
"outside_quorum": [],
"extra_probe_peers": [],
"sync_provider": [],
"monmap": {
"epoch": 8,
"fsid": "21ed0f42-69d2-450c-babf-b1a44c1b82e4",
"modified": "2017-01-17 14:42:49.383110",
"created": "2016-11-08 17:06:39.164349",
"mons": [
{
"rank": 0,
"name": "ceph-osd1",
"addr": "192.168.1.141:6789/0"
},
{
"rank": 1,
"name": "ceph-osd2",
"addr": "192.168.1.142:6789/0"
},
{
"rank": 2,
"name": "ceph-osd3",
"addr": "192.168.1.143:6789/0"
}
]
}
}
同样,对于符合JSON格式的文件,也是一样的效果。如果不是JSON格式,就会报错。
[root@ceph-osd1 ~]#cat json_err.txt |jq .
parse error: Expected separator between values at line 1, column 183
更多使用方法参考:
http://xmodulo.com/how-to-parse-json-string-via-command-line-on-linux.html
官方文档:
https://stedolan.github.io/jq/
版权声明:本文为博主原创文章,未经博主允许不得转载。
jq
- 上一篇:104岁的杨绛先生送给年轻人的9句话
- 下一篇:Ceph计算每个pool中PG数