加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Shell脚本处理JSON数据工具jq

发布时间:2020-12-15 17:06:42 所属栏目:安全 来源:网络整理
导读:当我们在LInux下需要处理json数据时,第一反应是用脚本编写一个工具,这样即耗时又不通用. 本文将介绍专门的命令行json处理工具 jq . 1、安装: 1)Ubuntu用户可以直接使用下列命令安装: $ sudo apt-get install jq 2)采用源码安装: https://github.com/sted

当我们在LInux下需要处理json数据时,第一反应是用脚本编写一个工具,这样即耗时又不通用. 本文将介绍专门的命令行json处理工具jq.

1、安装:

1)Ubuntu用户可以直接使用下列命令安装:

$ sudo apt-get install jq
2)采用源码安装:

https://github.com/stedolan/jq
3)直接下载可执行文件:

https://stedolan.github.io/jq/


2、使用:

{
    "name": "中国","province": [{
        "name": "黑龙江","cities": {
            "city": ["哈尔滨","大庆"]
        }
    },{
        "name": "广东","cities": {
            "city": ["广州","深圳","珠海"]
        }
    },{
        "name": "台湾","cities": {
            "city": ["台北","高雄"]
        }
    },{
        "name": "新疆","cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}

1)解析json:

$ cat test.json | jq '.name'
"中国"
$ cat test.json | jq '.province[0].name'
"黑龙江"
$ cat test.json | jq '.province[].name'
"黑龙江"
"广东"
"台湾"
"新疆"
2)提取字段:

$ cat test.json | jq '.province[0]'
{
  "cities": {
    "city": [
      "哈尔滨","大庆"
    ]
  },"name": "黑龙江"
}
$ cat test.json | jq '.province[]'
{
  "cities": {
    "city": [
      "哈尔滨","name": "黑龙江"
}
{
  "cities": {
    "city": [
      "广州","珠海"
    ]
  },"name": "广东"
}
{
  "cities": {
    "city": [
      "台北","高雄"
    ]
  },"name": "台湾"
}
{
  "cities": {
    "city": [
      "乌鲁木齐"
    ]
  },"name": "新疆"
}
$ cat test.json | jq '.province[0] | {name,cities}'
{
  "cities": {
    "city": [
      "哈尔滨","name": "黑龙江"
}
$ cat test.json | jq '.province[0] | {name}'
{
  "name": "黑龙江"
}

3)内置函数keys:

$ cat test.json | jq 'keys'
[
  "name","province"
]
$ cat test.json | jq '.|keys'
[
  "name","province"
]
$ cat test.json | jq '.province[0]|keys'
[
  "cities","name"
]
$ cat test.json | jq '.province[]|keys'
[
  "cities","name"
]
[
  "cities","name"
]

4)内置函数has:

$ cat test.json | jq 'has("name")'
true
$ cat test.json | jq '.province[0] | has("name")'
true
$ cat test.json | jq 'has("noname")'
false

参考:

https://www.ibm.com/developerworks/cn/linux/1612_chengg_jq/index.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读