我想逐行打印包含键值的json文件的每个路径和值。鉴于以下json和jq,是否还可以为每一行添加值?如果不使用jq还有另一种方法吗?我想到的依稀相似的东西snmpwalk的为JSON。另外,我正在尝试做的事情是否有技术术语?
$ cat short.json | jq '.'
{
"Reservations": [
{
"Groups": [],
"Instances": [
{
"ImageId": "ami-a",
"InstanceId": "i-a",
"InstanceType": "t2.micro",
"KeyName": "ubuntu"
}
]
}
]
}
$ cat short.json | jq -r '[paths | map(.|tostring) | join(".")]'
[
"Reservations",
"Reservations.0",
"Reservations.0.Groups",
"Reservations.0.Instances",
"Reservations.0.Instances.0",
"Reservations.0.Instances.0.ImageId",
"Reservations.0.Instances.0.InstanceId",
"Reservations.0.Instances.0.InstanceType",
"Reservations.0.Instances.0.KeyName"
]
Run Code Online (Sandbox Code Playgroud)
多行输出中的单行示例:
"Reservations.0.Instances.0.ImageId": "ami-a",
如果可以使用复制和粘贴将输出格式化为在jq 中使用,并且使用 linux cut 轻松分离值,则奖励:
'.Reservations[].Instances[].ImageId': "ami-a"
Run Code Online (Sandbox Code Playgroud)
$ cat short.json | jq …
Run Code Online (Sandbox Code Playgroud)