尝试使用 jq 从 aws-cli 响应中提取值但失败了,我做错了什么?
Trying to extract values from aws-cli response using jq but failing, what am I doing wrong?
我有以下 json 结构:
[
{
"IsDefault": false,
"CidrBlock": "172.19.0.0/16",
"DhcpOptionsId": "dopt-37fd70550",
"State": "available",
"CidrBlockAssociationSet": [
{
"CidrBlockState": {
"State": "associated"
},
"CidrBlock": "172.19.0.0/16",
"AssociationId": "vpc-cidr-assoc-f3c1559a"
}
],
"Tags": [
{
"Key": "Name",
"Value": "product-Production"
}
],
"InstanceTenancy": "default",
"VpcId": "vpc-1f0e197d"
},
{
"IsDefault": false,
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-0a550861",
"State": "available",
"CidrBlockAssociationSet": [
{
"CidrBlockState": {
"State": "associated"
},
"CidrBlock": "10.0.0.0/16",
"AssociationId": "vpc-cidr-assoc-8955dae0"
}
],
"Tags": [
{
"Key": "Name",
"Value": "Marketing VPC"
}
],
"InstanceTenancy": "default",
"VpcId": "vpc-36b5585d"
},
.
.
.
]
我正在尝试使用 jq 打印所有 VpcId,但找不到正确的方法。
这是我试过的方法:
command | jq -r '.VpcId[]'
command | jq -r '.VpcId'
command | jq -r '.[] | .VpcId'
我做错了什么?
您使用的命令似乎是aws ec2 describe-vpcs
。
这条命令实际上returns如下结构:
{
"Vpcs": [
{
"VpcId": "vpc-xxxxxxxx",
}
]
}
所以你想在迭代数组之前进入 Vpcs
键,像这样:
aws ec2 describe-vpcs | jq -r '.Vpcs | .[] | .VpcId'
要考虑的替代方法是使用 ..
,例如
.. | .VpcId? // empty
将打印所有 "VpcId" 键的值,null
和 false
值除外。
顺便说一句,.Vpcs | .[] | .VpcId
可以缩写为.Vpcs[].VpcId
我有以下 json 结构:
[
{
"IsDefault": false,
"CidrBlock": "172.19.0.0/16",
"DhcpOptionsId": "dopt-37fd70550",
"State": "available",
"CidrBlockAssociationSet": [
{
"CidrBlockState": {
"State": "associated"
},
"CidrBlock": "172.19.0.0/16",
"AssociationId": "vpc-cidr-assoc-f3c1559a"
}
],
"Tags": [
{
"Key": "Name",
"Value": "product-Production"
}
],
"InstanceTenancy": "default",
"VpcId": "vpc-1f0e197d"
},
{
"IsDefault": false,
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-0a550861",
"State": "available",
"CidrBlockAssociationSet": [
{
"CidrBlockState": {
"State": "associated"
},
"CidrBlock": "10.0.0.0/16",
"AssociationId": "vpc-cidr-assoc-8955dae0"
}
],
"Tags": [
{
"Key": "Name",
"Value": "Marketing VPC"
}
],
"InstanceTenancy": "default",
"VpcId": "vpc-36b5585d"
},
.
.
.
]
我正在尝试使用 jq 打印所有 VpcId,但找不到正确的方法。
这是我试过的方法:
command | jq -r '.VpcId[]'
command | jq -r '.VpcId'
command | jq -r '.[] | .VpcId'
我做错了什么?
您使用的命令似乎是aws ec2 describe-vpcs
。
这条命令实际上returns如下结构:
{
"Vpcs": [
{
"VpcId": "vpc-xxxxxxxx",
}
]
}
所以你想在迭代数组之前进入 Vpcs
键,像这样:
aws ec2 describe-vpcs | jq -r '.Vpcs | .[] | .VpcId'
要考虑的替代方法是使用 ..
,例如
.. | .VpcId? // empty
将打印所有 "VpcId" 键的值,null
和 false
值除外。
顺便说一句,.Vpcs | .[] | .VpcId
可以缩写为.Vpcs[].VpcId