使用 jq 从不同的嵌套对象中选择多个值
Selecting multiple values from different nested objects using jq
我正在使用 AWS cli,我希望能够查询实例以获取它们的名称和状态。示例:
instance 1, running
instance 2, stopped
我可以使用此查询获取实例名称和状态
aws ec2 describe-instances --output json --filters Name=tag:Name,Values=*"instance "* --query "Reservations[].Instances[]" | jq ".[] | .Tags, .State.Name"
但是,这给了我一个对象数组和一个值。
[
{
"Key": "Name",
"Value": "instance 1"
},
{
"Key": "VPC",
"Value": "the vpc"
},
{
"Key": "ami_backup",
"Value": "false"
},
...
]
"running"
快到了。我如何将每个对象的值与状态字符串结合起来,以便我可以过滤对象以仅获取 Key==Name
?
我尝试使用 map
但无法提出有效的语法。
考虑:
.[] | (.Tags[] | select(.Key=="Name").Value) + ", " + .State.Name
我正在使用 AWS cli,我希望能够查询实例以获取它们的名称和状态。示例:
instance 1, running
instance 2, stopped
我可以使用此查询获取实例名称和状态
aws ec2 describe-instances --output json --filters Name=tag:Name,Values=*"instance "* --query "Reservations[].Instances[]" | jq ".[] | .Tags, .State.Name"
但是,这给了我一个对象数组和一个值。
[
{
"Key": "Name",
"Value": "instance 1"
},
{
"Key": "VPC",
"Value": "the vpc"
},
{
"Key": "ami_backup",
"Value": "false"
},
...
]
"running"
快到了。我如何将每个对象的值与状态字符串结合起来,以便我可以过滤对象以仅获取 Key==Name
?
我尝试使用 map
但无法提出有效的语法。
考虑:
.[] | (.Tags[] | select(.Key=="Name").Value) + ", " + .State.Name