jq Bedingte Ausgabe


80

Ich benutze jq , um mit json zu spielen. Ich habe mich gefragt, wie ich etwas bedingt darin drucken soll.

Angenommen, ich interessiere mich für einen Feldanruf geo. Ich habe den folgenden Befehl verwendet und festgestellt, dass es nur einen Eintrag gibt, der geolautet null:

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

Wie kann ich diesen Eintrag nur ausdrucken, ohne alles andere auszudrucken?

Ich habe so etwas wie einen printBefehl im Handbuch nicht gesehen. Und das funktioniert nicht : cat all.json | jq 'if .place == null then . end'. jqbeschwerte sich über Syntaxfehler.

Antworten:


136

Mit der Auswahlfunktion können Sie nur die erforderlichen Einträge abrufen:

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

21
Die Auswahl funktioniert, aber um die Frage vollständig zu beantworten, müssen Sie nur das Geo erneut filtern und in jq:cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json
Andy Reagan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.