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пожаловался на синтаксическую ошибку.

Ответы:


144

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

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

22
Выбор работает, но чтобы полностью ответить на вопрос, вам нужно снова отфильтровать только гео, пропуская внутри jq:cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json
Энди Рейган,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.