programing

jq의 빈 어레이를 적절하게 삭제하는 방법

goodjava 2023. 3. 26. 11:20

jq의 빈 어레이를 적절하게 삭제하는 방법

오라일리의 새 "명령줄에서 데이터 과학"을 읽고 있는데 jq 사용에 문제가 생겼습니다.JSON(NYTimes 기사 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'

하지만 그건 추하게 느껴져요.더 좋은 방법은 없을까?

를 사용합니다.select여기서 length > 0 입니다.

select(length > 0)

언급URL : https://stackoverflow.com/questions/26195214/how-to-nicely-remove-empty-array-in-jq