如何很好地删除jq中的空数组

加布里埃尔·珀杜(Gabriel Perdue)

我正在阅读O'Reilly的新文章《命令行中的数据科学》,并且在使用jq时遇到了麻烦。我有一些JSON(从NYTimes Articles API返回),我正在用jq进行解析,如下所示:

jq -c \
'[.response.docs[] | {date: .pub_date, type: .document_type, title: .headline.main }]' \
< myjsonfile.json

因此,我正在寻找“ response”:“ docs”(这是一个数组),然后将该数组中的每个项目与“ pub_type”等进行匹配,将其重命名,依此类推。这很好用,但是在末尾添加了一个空数组:

[{"date":"2009-01-02T00:00:00Z","type":"article","title":"SPARE TIMES: AROUND TOWN"},  
{"date":"2009-01-02T00:00:00Z","type":"article","title":"Catskill Home Prices: How Low Will They Go?"},
{"date":"2009-01-01T00:00:00Z","type":"article","title":"Ominous Cutbacks At Chanel"}]
[] 

如何摆脱空数组?现在,我的解决方案是将输出通过管道返回到jq,但这感觉确实不是很理想。所以这工作:

jq -c \
'[.response.docs[] | {date: .pub_date, type: .document_type, title: .headline.main }]' | \
< myjsonfile.json | 
jq 'if length > 0 then . else empty end'

但这感觉很难看。有更好的方法吗?

杰夫·梅卡多(Jeff Mercado)

使用select长度> 0过滤器。

select(length > 0)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章