jq Wyjście warunkowe


84

Używam jq do zabawy z json. Zastanawiałem się, jak warunkowo coś w tym wydrukować.

Powiedzmy, że jestem zainteresowany rozmową w terenie geo. Użyłem następującego polecenia i stwierdziłem, że jest tylko jeden wpis, który geoto null:

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

Jak mogę wydrukować tylko ten wpis bez drukowania wszystkiego innego?

Nie widziałem czegoś takiego jak printpolecenie w instrukcji. I to nie działa: cat all.json | jq 'if .place == null then . end'. jqskarżył się na błąd składni.

Odpowiedzi:


144

Możesz użyć funkcji wyboru, aby uzyskać tylko wymagane wpisy:

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

22
Wybór działa, ale aby w pełni odpowiedzieć na pytanie, musisz ponownie przefiltrować tylko dane geograficzne, umieszczając rurowanie wewnątrz jq:cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json
Andy Reagan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.