jq命令

0. 命令

jq [option] filter [files]
jq+可选参数+过滤条件+文件位置
过滤参数:
. :格式化json内容
.foo :输出指定属性,使用.嵌套访问字段
.[下标] :输出指定数组元素
.[] :输出指定数组中全部元素
, :多个属性过滤时,使用逗号分隔
| :管道过滤,将指定的数组元素中的某个属性作为过滤条件
注:jq过滤条件都是以.开头

1. 数据增删改

1.1 增

cat lq.txt | jq '. + {d:4}' --在全部元素的基础上增加元素d
cat lq.txt | jq '.data + {d:4}' --在data元素值基础上增加元素d

1.2 删

cat lq.txt | jq 'del(.data.v1)' --删除json中的元素v1

1.3 改

cat lq.txt | jq '.age={dd:5}' --更改age元素的值为{"dd":5}

2. 内置函数

2.1 keys获取json中的所有key

echo '{"a":1,"b":2,"c":3,"d":4}' | jq 'keys' --返回["a","b","c","d"]

2.2 返回元素的长度length

echo '{"a":1,"b":2,"c":3,"d":4}' | jq 'length' --返回元素个数:4
echo '[{"a":1,"c":2}, "string", {"a":2}, null]' | jq '.[] | length' --返回2 6 1 0

3. 管道

cat tmp.json | jq '.[0] | keys'

posted on 2022-05-26 16:52  开心种树  阅读(487)  评论(0编辑  收藏  举报