2013-10-24 3 views
24

나는 json으로 게임하기 위해 jq을 사용하고 있습니다. 조건부로 뭔가를 인쇄하는 방법을 궁금 해서요.jq 조건부 출력

나는 필드 전화 geo에 관심이있다. 나는 다음과 같은 명령을 사용하고 그 geonull 만 하나 개의 항목이 발견 :

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

어떻게 난 단지 다른 모든 인쇄하지 않고 해당 항목을 인쇄 할 수는?

설명서에 print 명령이 표시되지 않았습니다. 그리고 이것은 작동하지 않습니다 : cat all.json | jq 'if .place == null then . end'. jq에서 구문 오류가 발생했습니다.

답변

54

에만 필요한 항목을 얻을 수있는 select 기능을 사용할 수 있습니다 :

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

셀렉트 작품을 수 있지만 완전히 JQ 안에 다시에만 지리를 필터링해야합니다 질문, 배관 대답 : 모든'고양이 .json | jq 'select (.geo! = null) | .geo '> geo-only.json' –