【发布时间】:2022-01-06 01:20:34
【问题描述】:
我想将以下 JSON 内容存储在文件 tmp.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"
"value1-1","value1-2"
"value2-1","value2-2"
"value3-1","value3-2"
我想出的最接近的 jq 表达式是这样的:
cat ./tmp.json | jq -r '.results | [ .[] | del(last) ] | (first | map(.field)), (.[] | map(.value)) | @csv'
它适用于 jq 1.6 版,但对于 1.5 版,最后一个“列”仍包含在 CSV 结果中。如何编辑 jq 代码以使其适用于 1.5 版?
注意列数不限于3;它可以更多。 jq 代码应该能够删除最终 CSV 结果中的最后一列。
【问题讨论】:
标签: json jq export-to-csv