我具有以下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'
我在做什么错了?
答案 0 :(得分:1)
看起来您正在使用的命令是aws ec2 describe-vpcs
。
此命令实际上返回以下结构:
{
"Vpcs": [
{
"VpcId": "vpc-xxxxxxxx",
}
]
}
因此,您想在遍历数组之前进入Vpcs
键,就像这样:
aws ec2 describe-vpcs | jq -r '.Vpcs | .[] | .VpcId'
答案 1 :(得分:0)
要考虑的另一种方法是使用..
,例如
.. | .VpcId? // empty
将打印所有“ VpcId”键的值,但null
和false
值除外。
偶然地,.Vpcs | .[] | .VpcId
可以缩写为.Vpcs[].VpcId