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.

Respuestas:


144

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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.