我跟随json(文件名sample.json) -
{ “前缀”:“pg”,
“fileFormat”:“gz”,
“附加信息”: “ {\ “pgUsername \”:\ “postgres的\”,\ “PGPASSWORD \”:\ “postgres的\”,\ “pgHostname \”:\ “pgmaster \”}“
}
我正在使用以下命令阅读这些参数
cat sample.json | jq -r '.additionalInfo .pgPassword'
预期输出为postgres
,但我得到类似[26]
我无法改变这个json。有谁知道,应该使用什么命令来获得正确的输出?提前谢谢。
答案 0 :(得分:2)
感谢fromjson
,无需再次调用jq两次:
jq -r '.additionalInfo|fromjson|.pgPassword' data.json
postgres
答案 1 :(得分:1)
您的json不正确(您可以在https://jsonlint.com上验证),您可以试试这个:
{
"additionalInfo": {
"pgUsername": "postgres",
"pgPassword": "postgres",
"pgHostname": "pgmaster"
}
}
你会得到预期的结果:
$ cat data.json| jq -r '.additionalInfo .pgPassword'
postgres
修改
对于您修改后的数据,您可以使用:
$ cat data.json| jq -r '.additionalInfo' | jq '.pgPassword'
postgres
再次编辑
请查看@peak的comment - 它不需要多次执行jq
,而是建议使用内置的fromjson
。