#### 安装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