如何解决jQuery-从不同的键打印一行值
示例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,Not found,404
因此,跳过仅对某些值感兴趣的键,并形成一行,然后用逗号或分号或其他分隔符将其分开。
用jq可以想象的最简单的过程是将值放入数组并使用@csv
jq -r .[] | [ .Header.Tenant,.Header.Stage,.Header.ProductType,.Body.error.message,.Body.error.code ] | @csv
几乎以上是我想要的,但是每个值都用双引号引起来。我可以使用其他一些工具处理双引号,但我相信jq本身应该可以做到。
使用jq的替代方法是什么?
谢谢
解决方法
@csv
可以保证产生CSV,但是如果希望无条件地显示字符串而没有引号,可以考虑使用join(",")
而不是@csv
。由于您表示愿意接受其他一些价值分隔符,因此您不妨考虑使用@tsv
。
还可以减少jq程序中的冗余,因此您可能会遇到以下问题:
.[]
| (.Header | [.Tenant,.Stage,.ProductType]) +
(.Body.error | [.message,.code ])
| @tsv
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。