다음 명령이 유효합니다:
$ 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
와일드카드를 어떻게 피해야 합니까? 나는 여러 가지 변형을 시도했지만 성공하지 못했습니다.
와일드카드를 배열 인덱스로 사용하는 것은 다음과 같은 유효한 옵션입니다.https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html#:~:text=JSONPath%20is%20a%20query%20언어,%20requires%20 to%20be%20 확인.
답변1
배열 반복자에는 별표 문자가 필요 jq
하지 .[]
않습니다. 다음 명령은 예상되는 출력을 제공합니다.
echo '{ "a": [ { "b": "1" }, { "b": "2" } ] }' | jq -r '.a[].b'
결과:
1
2
추가 참조:jq 매뉴얼
구문이 다른 이유에 대해서는 jq
쿼리를 위한 자체 구문이 있는 도구가 있습니다. JSONPath 표준을 기반으로 하지 않습니다.