programing

jq에서 CSV 출력을 사용할 때 어레이를 단일 문자열 값으로 결합하려면 어떻게 해야 합니까?

starjava 2023. 2. 26. 08:41
반응형

jq에서 CSV 출력을 사용할 때 어레이를 단일 문자열 값으로 결합하려면 어떻게 해야 합니까?

다음과 같은 것이 있습니다.jq명령어:

cat myFile.json | jq -r '.tickets[] | [.created_at, .id, .via.channel, .tags[]] | @csv'

그리고 다음과 같은 행을 출력합니다.

"2016-02-02T10:00:00Z",99999,"web","tag1","tag2","tag3","tag4"

하려고 합니다.join.tags[]어레이를 통해 다음을 실현할 수 있습니다.

"2016-02-19T13:25:55Z",99999,"web","tag1,tag2,tag3,tag4"

몇 가지 시도를 해봤는데

cat myFile.json | jq -r '.tickets[] | [.created_at, .id, .via.channel, (.tags[] | join(","))] | @csv'

하지만 그것은 다음과 같은 오류를 일으킨다.

jq: error (at <stdin>:0): Cannot iterate over string ("tag1...)

그럼 어떻게 가입하면 되죠?.tags[]개별 필드 대신 단일 문자열 값(쉼표로 구분된 태그 값 포함)을 얻을 수 있도록 위의 명령을 사용합니다.

전화하셔야 합니다.join()에서tags개별 태그가 아닌 목록입니다.사용 방법:

jq -r '.tickets[] | [.created_at, .id, .via.channel, (.tags | join(","))] | @csv'

언급URL : https://stackoverflow.com/questions/45165303/how-to-combine-an-array-into-a-single-string-value-when-using-csv-output-in-jq

반응형