【发布时间】:2020-12-18 13:20:51
【问题描述】:
示例 Json 文件:
[
{
"Header": {
"Tenant": "Test-d1",
"Stage": "dev",
"ProductType": "b2b",
"Rcode": 401
},
"Body": {
"error": {
"code": 401,
"message": "Unsupported authorization scheme"
}
}
},
{
"Header": {
"Tenant": "2734d7ac0f0e",
"Stage": "unknown",
"ProductType": "unknown",
"Rcode": 404
},
"Body": {
"error": {
"code": 404,
"message": "Not found"
}
}
}
]
期望的输出:
Test-d1, dev, b2b, Unsupported authorization scheme, 401
2734d7ac0f0e, unknown, unknown, Not found, 404
所以跳过键,只对某些值感兴趣并形成一行,用逗号或半列或其他分隔符分隔它们。
我能想到的最简单的 jq 过程是将值放入数组并使用 @csv
jq -r .[] | [ .Header.Tenant, .Header.Stage, .Header.ProductType, .Body.error.message, .Body.error.code ] | @csv
几乎 做我想要的,但是用双引号将每个值括起来。我可以使用其他一些工具来处理双引号,但我确信它应该可以在 jq 本身内实现。
使用 jq 的替代方法有哪些?
谢谢
【问题讨论】:
标签: arrays sorting search replace jq