簡體   English   中英

如何很好地刪除 jq 中的空數組

[英]How to nicely remove empty array in jq

我正在閱讀 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'

但這感覺很丑。 有沒有更好的方法來做到這一點?

使用長度 > 0 的select過濾器。

select(length > 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM