条件输出的jq

118

我正在使用jq处理JSON数据。我想知道如何在其中有条件地打印内容。

比如说我对一个名为geo的字段感兴趣。我使用了以下命令并发现只有一个条目的geonull

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

如何只打印出该条目而不打印其他内容?

手册中没有类似于print命令的东西。这个也不起作用:cat all.json | jq 'if .place == null then . end'jq抱怨语法错误。

1个回答

191

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

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

28
这段话的意思是,为了完整回答问题,你需要再次过滤出只包含地理信息的数据,并使用管道符将其传输给jq。具体操作是在jq命令中加入筛选条件:cat all.json | jq 'select(.geo != null) | .geo' > geo-only.json - Andy Reagan
2
提醒一下,cat 是不必要的,你可以这样做 jq 'select(.geo != null) | .geo' all.json > geo-only.json - João Ciocca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接