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

Ви можете використовувати функцію select, щоб отримати лише необхідні записи:

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.