jqを使用してTSVで平面化し、入れ子になった配列をコンマ区切り値で平面化するにはどうすればよいですか?

jqを使用してTSVで平面化し、入れ子になった配列をコンマ区切り値で平面化するにはどうすればよいですか?

次のJSON形式があります。

{
"page":1,
"total_results":1,
"total_pages":1,
"results":[
    {
    "id":6037,
    "genre_ids":[35,80,9648,53],
    "popularity":11.379
    }
]
}

Genre_ids配列はコンマで区切られ、水平間隔にタブを追加しないこの形式を生成する必要があります。

6037   35,80,9648,53   11.379

以下を使用して結果の配列を平面化することができました。

jq -r '.results[0] | [.id,.popularity] | @tsv'

結果:

6037   11.379

しかし、Genre_idsを追加すると:

jq -r '.results[0] | [.id,.genre_ids[],.popularity] | @tsv'

私は得る:

308531   28   12   35   878   10751   32.497

genre_idsタブ区切りの親要素内で配列をカンマ区切りリストにマージする方法は?

ベストアンサー1

あなたはできますjoin配列を文字列に変換:

$ jq -r '.results[0] | [.id,(.genre_ids | join(",")),.popularity] | @tsv' < foo.json
6037    35,80,9648,53   11.379

おすすめ記事