【发布时间】:2021-06-10 05:14:20
【问题描述】:
我正在尝试让 jq 将 json 对象呈现为 tsv 格式。我遇到了一种使用键名动态生成标题的方法。
我收到此错误:
对象 ({"version":...) 在 csv 行中无效
我猜这是因为某些字段是数组:Installed 和 Latest。我怎样才能使这些领域的工作?另外,为什么我的输出包含\t?
电流输出:
"RELEASE\tINSTALLED\tLATEST\tOUTDATED\tDEPRECATED"
jq: error (at <stdin>:28): object ({"version":...) is not valid in a csv row
期望的输出:
RELEASE INSTALLED LATEST OUTDATED DEPRACATED
test-app 1.0.0 2.0.0 true false
test-app2 3.0.0 3.5.0 true false
jq
cat test1.json | jq '[.[]| with_entries( .key |= ascii_upcase ) ] | (.[0] |keys_unsorted | @tsv), (.[]|.|map(.) |@tsv)'
json:
[
{
"release": "test-app",
"Installed": {
"version": "1.0.0",
"appVersion": ""
},
"Latest": {
"version": "2.0.0",
"appVersion": ""
},
"outdated": true,
"deprecated": false
},
{
"release": "test-app2",
"Installed": {
"version": "3.0.0",
"appVersion": ""
},
"Latest": {
"version": "3.5.0",
"appVersion": ""
},
"outdated": true,
"deprecated": false
}
]
【问题讨论】: