命令使用案例
- 基本使用
1 | cat abc.json|jq . |
- 获取某个key的值
1 | cat abc.json|jq '.children' |
- keys
1 | cat abc.json|jq keys |
- .[]
1 | cat abc.json|jq .[] |
- [.[]]
1 | cat abc.json|jq [.[]] |
- 索引
1 | cat abc.json|jq .[1] |
- 比如取出数组元素中 name 的值
1 | echo '[{"name": "foo"},{"name": "bar"},{"name": "foobar"}]' |jq .[].name |
- 也可以用下面会提到的管道操作
1 | echo '[{"name": "foo"},{"name": "bar"},{"name": "foobar"}]' |jq '.[]|.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)
可以实现对数组的每一项进行操作,然后合并结果的功能
1 | echo '["mozillazg.com", "mozillazg"]' | jq 'map(length)' |
select(foo)
可以实现对输入项进行判断,只返回符合条件的项
1 | echo '["mozillazg.com", "mozillazg"]' | jq 'map(select(.|length > 9))' |
- 可以使用
\(foo)
实现字符串插值功能
1 | echo '{"url": "mozillazg.com", "name": "mozillazg"}' |jq '"hi \(.name)"' |
- 使用
+
实现字符串拼接
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
1 | echo '["mozillazg.com", "mozillazg"]' | jq '.|join(" | ")' |
- 字符串split
1 | echo '"mozillazg.com | mozillazg"' |jq 'split(" | ")' |