使用jq -jr解析json输出

时间:2019-12-19 19:58:40

标签: json jq

我正在运行一个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"]

2 个答案:

答案 0 :(得分:0)

如果您确实想要无效的JSON输出,则必须构造输出字符串,这可以使用字符串插值轻松完成,例如:

jq -r '.items[] | "[\"\(.node)\",\"\(.result.stdout)\"]"'

答案 1 :(得分:0)

@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
"