

下記のJSONをjqでCSVに変換しています。

[code]

    {
        "items":[
            {
                "id":"1",
                "name":"masao",
                "images":["001.jpg","002.jpg"]    
            },
            {
                "id":"2",
                "name":"hideo",
                "images":["003.jpg","004.jpg"]    
            }
        ]
    }
    
[/code]

下記のコマンドでCSVを作成するのですが、配列の入れ子になっているimagesの情報の取得方法がわかりません。

> cat sample.json | jq -r '.items[]|[.id, .name]|@csv' | sed -e 's/"//g';  
>  1,masao  
>  2,hideo

どのようなコマンドを打てば  
1,masao,001.jpg  
2,hideo,003.jpg  
のように取得することができるでしょうか？


CC BY-SA 3.0
2018-01-25T16:44:01.127
41212
2018-01-27T03:24:18.143
2018-01-26T02:40:48.623
19110
8823
question
json csv jq
jqを使いJSONの入れ子配列から値を取得する


コメントにて教えていただきました。

[code]

    cat sample.json | jq -r '.items[]|[.id, .name ,images[0]]|@csv' | sed -e 's/"//g';
    
[/code]

また、`sed -e 's/"//g';`を使わなくても

[code]

    cat sample.json | jq -r '.items[]|"\(.id),\(.name),\(.images[0])"'
    
[/code]

と書けばダブルクオーテーションも取り除けるそうです。大変参考になりました。


CC BY-SA 3.0
2018-01-27T02:55:17.663
41238
2018-01-27T03:24:18.143
2018-01-27T03:24:18.143
754
8823
41212
answer