linux json工具 jq

#### 安装jq

yum list|grep jq
yum -y install jq
(如果没有jq
# yum -y install rep-release
)
一、创建一个json文件

注意格式,主要注意逗号, 在[],{} 区间内,如果是最后一个key ,不加逗号

$ cat parm.json 
{"new":[
        {
        "createday":"2017-04-13",
        "countdate":"2017-04-13",
        "area":"29-29",
        "level":"40-50"
        },

        {
        "createday":"2017-04-13",
        "countdate":"2017-04-12",
        "area":"29-29",
        "level":"40-50"
        },

        {
        "createday":"2017-04-13",
        "countdate":"2017-04-11",
        "area":"29-29",
        "level":"40-50"
        }
],

"new2":[
        {
        "createday":"2017-04-13",
        "countdate":"2017-04-13",
        "area":"29-29",
        "level":"40-50"
        },

        {
        "createday":"2017-04-13",
        "countdate":"2017-04-12",
        "area":"29-29",
        "level":"40-50"
        },

        {
        "createday":"2017-04-13",
        "countdate":"2017-04-11",
        "area":"29-29",
        "level":"40-50"
        }
]

}
二、length

上面的json文件有两个对象, new和 new2

1、查看有几个对象
$ jq length parm.json 
2
2、查看对象内有几个条目
$ jq '.new|length' parm.json 
3
3、查看对象内每个条目有几个key 对
$ jq '.new[0]|length' parm.json 
4
三、链式调用具体某个位置的key值
1、打印出 new 对象,第三个条目,的countdate 值

new[2] 是第三个条目,new其实是一个数组

$ jq .new[2].countdate parm.json 
"2017-04-11"
四、jq 管道操作
1、打印出 某个key 数组
注意{countdate} 加 {}

$ jq '.new[] | {countdate} ' parm.json 
{
  "countdate": "2017-04-13"
}
{
  "countdate": "2017-04-12"
}
{
  "countdate": "2017-04-11"
}
2、变量赋值
### variable assignment
         new = `jq .new parm.json`

         newlength=`jq '.|length' parm.json`

这两种写法的结果是一样的

### variable assignment
         new = `jq . parm.json`

         newlength=`jq '.new |length' parm.json`

链式调用 key

$ new=`jq .new parm.json`

$ echo $new|jq .[0]
{
  "createday": "2017-04-13",
  "countdate": "2017-04-13",
  "area": "29-29",
  "level": "40-50"
}

$ echo $new|jq .[1]
{
  "createday": "2017-04-13",
  "countdate": "2017-04-12",
  "area": "29-29",
  "level": "40-50"
}

$ echo $new|jq .[1].countdate
"2017-04-12"
五、-r 参数,不输出双引号
# jq . test.json 
{
  "test": {
    "area": "1-4"
  }
}
[root@www ~]# jq -r .test.area test.json 
1-4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值