jq条件输出


84

我正在使用jq来播放json。我想知道如何有条件地在其中打印一些内容。

说我对现场电话感兴趣geo。我使用了以下命令,发现只有一个条目geonull

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

我如何只打印该条目而不打印其他所有内容?

print在手册中没有看到类似command的内容。而且这行不通:cat all.json | jq 'if .place == null then . end'jq抱怨语法错误。

Answers:


144

您可以使用select函数仅获取必需的条目:

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

22
选择有效,但要完全回答这个问题,您只需在jq内重新过滤地理位置,即可:cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json
Andy Reagan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.