jqを使用してオブジェクトリストからフィールドとサブフィールドを抽出し、サブフィールドのペアをグループ化してcsvに保存します。

jqを使用してオブジェクトリストからフィールドとサブフィールドを抽出し、サブフィールドのペアをグループ化してcsvに保存します。

このデータを使用すると、次のようになります。

[
  {
    "c": "A",
    "e": "B",
    "score": 0.99,
    "v": [
      {
        "context": "asdf",
        "score": 0.98,
        "url": "..."
      },
      {
        "context": "bcdfd",
        "score": 0.97,
        "url": "..."
      }
    ]
  },
  { 
    ...
  }
]

(外部リスト参照)

次を抽出しようとしています。

A, B, 0.99, asdf, 0.98, bcdfd, 0.97

だから私ができる最善は

jq -r '.[] | [.c, .e, .score, .v[].context, .v[].score ] | @csv' 

これは

A, B, 0.99, asdf, bcdfd, 0.998, 0.97

私はそれぞれの価値観を知って編むのではなく、ただ吐き出す.v[].context.v[score]

私が逃している魔法は何ですか?

ベストアンサー1

.context,.score私が考える各要素に対してフィルタを実行したいと思いますv

$ jq -r '.[] | [.c, .e, .score, (.v[] | .context,.score)] | @csv' file.json
"A","B",0.99,"asdf",0.98,"bcdfd",0.97

mapこれは、結果を配列にまとめずに組み込み関数を使用するのと同じです。

おすすめ記事