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)