jq Salida condicional

84

Estoy usando jq para jugar con json. Me preguntaba cómo imprimir condicionalmente algo en eso.

Digamos que estoy interesado en una llamada de campo geo. Usé el siguiente comando y descubrí que solo hay una entrada cuya geoes null:

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

¿Cómo puedo imprimir esa entrada solo sin imprimir todo lo demás?

No vi algo como printcomando en el manual. Y esto no funciona: cat all.json | jq 'if .place == null then . end'. jqse quejó de un error de sintaxis.

clwen
fuente

Respuestas:

144

Puede utilizar la función de selección para obtener solo las entradas necesarias:

jq 'select(.geo != null)' all.json
Max Taldykin
fuente
22
La selección funciona, pero para responder completamente a la pregunta, deberá filtrar solo la geo nuevamente, entubando dentro de jq:cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json
Andy Reagan