jq 조건부 출력


84

json을 사용하여 jq 를 사용 하고 있습니다. 조건부로 인쇄하는 방법이 궁금합니다.

현장 통화에 관심이 있다고 가정 해 보겠습니다 geo. 다음 명령을 사용하여 항목이 하나만 있음을 알았습니다.geo 있습니다이 null:

% cat all.json | jq '.geo != null' | sort | uniq -c              
   1 false
6891 true

다른 모든 항목을 인쇄하지 않고 해당 항목 만 인쇄하려면 어떻게해야합니까?

print매뉴얼에서 명령 과 같은 것을 보지 못했습니다 . 그리고 이것은 작동하지 않습니다 : cat all.json | jq 'if .place == null then . end'. jq구문 오류에 대해 불평했습니다.

답변:


144

선택 기능을 사용하여 필수 항목 만 가져올 수 있습니다 .

jq 'select(.geo != null)' all.json

22
선택 일 수 있지만 완전히 당신이 내부 JQ 배관 만 지리적 다시 필터가 필요합니다 질문에 대답하기 :cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json
앤디 레이건
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.