我想轉換存盤在檔案 input.json 中的以下 JSON 內容
{
"results": [
[
{
"field": "field1",
"value": "value1-1"
},
{
"field": "field2",
"value": "value1-2"
},
{
"field": "field3",
"value": "value1-3"
}
],
[
{
"field": "field1",
"value": "value2-1"
},
{
"field": "field2",
"value": "value2-2"
},
{
"field": "field3",
"value": "value2-3"
}
],
[
{
"field": "field1",
"value": "value3-1"
},
{
"field": "field2",
"value": "value3-2"
},
{
"field": "field3",
"value": "value3-3"
}
]
]
}
轉換成 CSV 輸出
"field1","field2","field3"
"value1-1","value1-2","value1-3"
"value2-1","value2-2","value2-3"
"value3-1","value3-2","value3-3"
我想出的最接近的 jq 運算式是這樣的:
$ cat input.json | jq -r '.results | .[] | map(.field), map(.value) | @csv'
"field1","field2","field3"
"value1-1","value1-2","value1-3"
"field1","field2","field3"
"value2-1","value2-2","value2-3"
"field1","field2","field3"
"value3-1","value3-2","value3-3"
這仍然不正確。我應該如何撰寫 jq 運算式以獲得所需的 CSV 輸出?
uj5u.com熱心網友回復:
你喂養.[]成map(.field)和map(.value)。
map(.field)僅在first物品上使用,map(.value)在所有物品上使用.[]:
jq -r '.results | (first | map(.field)), (.[] | map(.value)) | @csv' input.json
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/361168.html
