Bash
使用 jq 時正確轉義萬用字元
以下命令有效:
$ 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
是.[]
. 星號字元不是必需的。以下命令應該為您提供預期的輸出:echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[].b'
結果:
1 2
進一步參考:jq手冊
至於為什麼語法不同,
jq
是有自己的語法來查詢的工具。它不基於 JSONPath 標準。