[英]Parsing json output using jq -jr
我正在运行 puppet bolt 命令,以 json 格式从一组服务器中查询某些信息。 我正在将它输送到 jq .. 下面是我得到的
$ bolt command run "cat /blah/blah" -n @hname.txt -u uid --no-host-key-check --format json |jq -jr '.items[]|[.node],[.result.stdout]'
[
"node-name"
][
"stdout data\n"
]
我需要做什么才能使它看起来像下面这样
["nodename":"stdout data"]
如果您真的想要无效的 JSON 输出,则必须构造输出字符串,这可以使用字符串插值轻松完成,例如:
jq -r '.items[] | "[\"\(.node)\",\"\(.result.stdout)\"]"'
@peak谢谢你..有帮助。 下面是它的样子
$ bolt command run "cat /blah/blah" -n @hname.txt -u UID --no-host-key-check --format json |jq -r '.items[] | "[\"\(.node)\",\"\(.result.stdout)\"]"'
["node name","stdout data
"]
我使用了一种变通方法,通过对命令本身使用 @csv 标志来获取我需要的数据。 在下面与您分享有效的方法。
$ bolt command run "cat /blah/blah" -n @hname.txt -u uid --no-host-key-check --format json |jq -jr '.items[]|[.node],[.result.stdout]|@csv'
""node-name""stdout.data
"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.