jq Условный вывод

84

Я использую jq для игры с json. Интересно, как в этом условно что-то напечатать.

Скажем, я заинтересован в телефонной беседе 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пожаловался на синтаксическую ошибку.

Clwen
источник

Ответы:

144

Вы можете использовать функцию выбора, чтобы получить только необходимые записи:

jq 'select(.geo != null)' all.json
макс талдыкин
источник
22
Выбор работает, но чтобы полностью ответить на вопрос, вам нужно снова отфильтровать только гео, пропуская внутри jq:cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json
Энди Рейган,