常用 linux jq 命令语法整理
语法 | json | 命令 | result str | 说明 |
---|---|---|---|---|
. | “Hello, world!” | jq ‘.’ | “Hello, world!” | |
{“foo”: 42, “bar”: “less interesting data”} | jq ‘.foo’ | 42 | 返回对象foo key 值 | |
{“notfoo”: true, “alsonotfoo”: false} | jq ‘.foo’ | null | 对象key不存在,返回null | |
.[] | [1,2,3] | jq ‘.[]’ | 1 2 3 |
元素遍历 |
{“a”: 1, “b”: 2} | jq ‘.[]’ | 1 2 |
key 对值遍历 | |
.[<string>] | {“foo”: 42} | jq .[“foo”] | 42 | 获取key 对应值 |
.[<value>] | [{“name”:“JSON”, “good”:true}, {“name”:“XML”, “good”:false}] | jq ‘.[0]’ | {“name”:“JSON”, “good”:true} | 返回1下标元素 |
[1,2,3] | jq ‘.[-2]’ | 2 | 返回倒数两个位置元素 | |
.[start:end] | [“a”,“b”,“c”,“d”,“e”] | jq ‘.[2:4]’ | [“c”, “d”] | 下标开始到下标结束的元素 |
“abcdefghi” | jq ‘.[2:4]’ | “cd” | 下标开始到下标结束的字符 | |
.[:end] | [“a”,“b”,“c”,“d”,“e”] | jq ‘.[:3]’ | [“a”, “b”, “c”] | 首个元素到指定下标元素之间的元素 |
.[start:] | [“a”,“b”,“c”,“d”,“e”] | jq ‘.[-2:]’ | [“d”, “e”] | 指定下标开始到未元素之间的元素 |
, | {“foo”: 42, “bar”: “something else”, “baz”: true} | jq ‘.foo, .bar’ | 42, “something else” | 获取多个key值 |
{“user”:“stedolan”, “projects”: [“jq”, “wikiflow”]} | jq ‘.user, .projects[]’ | “stedolan”, “jq”, “wikiflow” | b取多个元素的值 | |
[“a”,“b”,“c”,“d”,“e”] | jq ‘.[4,2]’ | “e”, “c” | 取4 和 2 下标元素 | |
| | [{“name”:“JSON”, “good”:true}, {“name”:“XML”, “good”:false}] | jq ‘.[] | .name’ | “JSON”, “XML” | 管道 |
[] | {“user”:“stedolan”, “projects”: [“jq”, “wikiflow”]} | jq ‘[.user, .projects[]]’ | [“stedolan”, “jq”, “wikiflow”] | 元素值组成新数组 |
[1, 2, 3] | jq ‘[ .[] | . * 2]’ | [2, 4, 6] | 元素值组成新数组 | |
{} | [{“user”:“stedolan”, “title”: “JQ Primer”}] | jq ‘.[] | {user, title}’ | {“user”:“stedolan”, “title”: “JQ Primer”} | 组成对象(使用原key名) |
[{“user”:“stedolan”, “title”: “JQ Primer”}] | jq ‘.[] | {user1: .user, title: .title}’ | {“user1”:“stedolan”, “title”: “JQ Primer”} | 组成对象 |