以下命令有效:
$ echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[0].b'
1
但是,如果我尝试获取下所有b
元素的值,则会a
收到以下错误:
$ echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[*].b'
jq: error: syntax error, unexpected '*' (Unix shell quoting issues?) at <top-level>, line 1:
.a[*].b
jq: 1 compile error
我应该如何逃避通配符?我已经尝试了几种变体但没有成功。
中的数组迭代器
jq
是.[]
. 星号字符不是必需的。以下命令应该为您提供预期的输出:结果:
进一步参考:jq手册
至于为什么语法不同,
jq
是有自己的语法来查询的工具。它不基于 JSONPath 标准。