jq命令使用
命令使用案例
- 基本使用
- 获取某个key的值
1 | cat abc.json|jq '.children' |
- keys
- .[]
- [.[]]
- 索引
- 比如取出数组元素中 name 的值
- 也可以用下面会提到的管道操作
- 结果重新组成数组
1 | echo '[{"name": "foo"},{"name": "bar"},{"name": "foobar"}]' |jq [.[].name] |
- 使用
map
创建数组
1 | echo '[{"name": "foo"},{"name": "bar"},{"name": "foobar"}]' |jq 'map(.name)' |
length
可以获取字符串或数组的长度
1 | echo '{"url": "mozillazg.com", "name": "mozillazg"}' |jq '.url|length' |
map(foo)
可以实现对数组的每一项进行操作,然后合并结果的功能
select(foo)
可以实现对输入项进行判断,只返回符合条件的项
- 可以使用
\(foo)
实现字符串插值功能
1 | echo '{"url": "mozillazg.com", "name": "mozillazg"}' |jq '"hi \(.name)"' |
- 使用
+
实现字符串拼接
- 可以使用
if .. then .. elif .. then .. else .. end
实现条件判断
1 | echo '[0, 1, 2, 3]' \ |
- 可以通过
{}
和[]
构造新的 object 或 数组
1 | echo '["mozillazg.com", "mozillazg"]' |jq '{name: .[1]}' |
- join
- 字符串split