jq条件输出

clw*_*wen 57 command-line json jq

我正在使用jq和json一起玩.我想知道如何有条件地打印那些东西.

说我对野外电话感兴趣geo.我使用以下命令,发现只有一个条目geonull:

% cat all.json | jq '.geo != null' | sort | uniq -c              
   1 false
6891 true
Run Code Online (Sandbox Code Playgroud)

如何在不打印其他所有内容的情况下打印出该条目?

print在手册中没有看到类似命令的内容.这不起作用:cat all.json | jq 'if .place == null then . end'.jq抱怨语法错误.

max*_*kin 106

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

jq 'select(.geo != null)' all.json
Run Code Online (Sandbox Code Playgroud)

  • 选择工作,但要完全回答你需要再次过滤geo的问题,在jq中管道:`cat all.json | jq'select(.geo!= null)| .geo'> geo-only.json` (15认同)
  • 只是提醒一下,“cat”是不必要的,您可以执行“jq 'select(.geo != null) | .geo' all.json > geo-only.json` (3认同)