jq 是一个轻量级的json处理命令。可以对json数据进行分片、过滤、映射和转换,下面为大家详细讲解一下Linux jq命令使用方法。
安装。
[root@test-dhcp ~]# yum install jq
使用实例
- 创建
[root@test-dhcp ~]# jq -n {a:1}
{
"a": 1
}
[root@test-dhcp ~]# jq -n '{a:"test"}'
{
"a": "test"
}
- 合并
[root@test-dhcp ~]# jq -n '{a:"test"} + {b:2}'
{
"a": "test",
"b": 2
}
[root@test-dhcp ~]# jq -n '{a:"test"} + {b:2} + {c:"testc"}'
{
"a": "test",
"b": 2,
"c": "testc"
}
- 删除
[root@test-dhcp ~]# cat test.json
{"a": "test","b": 2, "c": "testc"}
[root@test-dhcp ~]# cat test.json |jq .
{
"a": "test",
"b": 2,
"c": "testc"
}
[root@test-dhcp ~]# cat test.json |jq 'del(.b)'
{
"a": "test",
"c": "testc"
}
- 更新
[root@test-dhcp ~]# cat test.json
{"a": "test","b": 2, "c": "testc"}
[root@test-dhcp ~]# cat test.json |jq '.b="testb"'
{
"a": "test",
"b": "testb",
"c": "testc"
}
[root@test-dhcp ~]# cat test.json |jq '. + {d:4}'
{
"a": "test",
"b": 2,
"c": "testc",
"d": 4
}
[root@test-dhcp ~]# cat test.json |jq '. + {d:4}' |jq '.d={dd:5}'
{
"a": "test",
"b": 2,
"c": "testc",
"d": {
"dd": 5
}
}
- 查询
[root@test-dhcp ~]# cat test.json |jq .
{
"a": "test",
"b": 2,
"c": "testc",
"d": {
"dd": 5
}
}
[root@test-dhcp ~]# cat test.json |jq '. + {d:4}' |jq '.d={dd:5}' |jq .d.dd
5
[root@test-dhcp ~]# echo '{"a":1,"b":2}' |jq '[.a,.b]'
[
1,
2
]
- 查看数据类型
[root@test-dhcp ~]# echo "{}" |jq -r type
object
[root@test-dhcp ~]# echo '[0, false, [], {}, null, "hello"]' |jq 'map(type)'
[
"number",
"boolean",
"array",
"object",
"null",
"string"
]
- 查询数组中的值
[root@test-dhcp ~]# echo [1,2,3] |jq .[1]
2
[root@test-dhcp ~]# echo [1,2,3] |jq .[2]
3
- 查询数组长度
[root@test-dhcp ~]# echo [1,2,3,9] |jq '.|length'
4
[root@test-dhcp ~]# echo [1,2,3] |jq '.|length'
3
- 数组相加
[root@test-dhcp ~]# echo [1,2,3] |jq '. + [4,5,6]'
[
1,
2,
3,
4,
5,
6
]
- 高级查询
[root@test-dhcp ~]# echo [1,2,3] | jq 'map(select(. >= 2))'
[
2,
3
]
[root@test-dhcp ~]# echo [1,2,3] | jq 'map(select(. == 2))'
[
2
]
[root@test-dhcp ~]# echo [1,2,3] | jq 'map(select(. != 2))'
[
1,
3
]
[root@test-dhcp ~]# cat test.json
[
{
"id": "0",
"model": "Intel(R)Xeon(R)CPUE5-2620v4@2.10GHz"
},
{
"id": "1",
"model": "Intel(R)Xeon(R)CPUE5-2620v4@2.10GHz"
}
]
[root@test-dhcp ~]# cat test.json |jq .[].model
"Intel(R)Xeon(R)CPUE5-2620v4@2.10GHz"
"Intel(R)Xeon(R)CPUE5-2620v4@2.10GHz"
- 类型转换
[root@test-dhcp ~]# echo '["a","b,c,d","e"]' |jq 'join(",")'
"a,b,c,d,e"
[root@test-dhcp ~]# echo '["a","b,c,d","e",1]' |jq 'join(",")'
jq: error (at
:1): string (
",") and number (1) cannot be added [root@
test-dhcp ~]
# cat test.json liuxin,30,male jiaweiqiang,29,femal [root@
test-dhcp ~]
# jq -R 'split(",")|{"name":.[0],"age":.[1],"sex":.[2]}' ./test.json {
"name":
"liuxin",
"age":
"30",
"sex":
"male" } {
"name":
"jiaweiqiang",
"age":
"29",
"sex":
"femal" } [root@
test-dhcp ~]
# cat test.json {
"name":
"liuxin",
"age":
"30",
"sex":
"male" } {
"name":
"jiaweiqiang",
"age":
"29",
"sex":
"femal" } [root@
test-dhcp ~]
# cat test.json |jq . -c {
"name":
"liuxin",
"age":
"30",
"sex":
"male"} {
"name":
"jiaweiqiang",
"age":
"29",
"sex":
"femal"}
本文来源:www.lxlinux.net/6806.html,若引用不当,请联系修改。


