我有一些如下所示的 JSON:
{
"Vpcs": [
{
"VpcId": "vpc-1",
"OwnerId": "abc"
},
{
"VpcId": "vpc-2",
"OwnerId": "def"
}
]
}
我只想要 的元素OwnerId!=abc
,但我想保持 Vpcs 父数组完整。
如果我这样做echo $JSON|jq -r '.Vpcs[]|select(.OwnerId!="abc")
,我会得到这个:
{
"VpcId": "vpc-2",
"OwnerId": "def"
}
这接近我想要的,但它没有父数组。所以,我想也许我应该将父数组放在 select 语句中,如下所示:
echo $JSON |jq -r '.|select(.Vpcs[].OwnerId!="abc")'
但这似乎并没有过滤我想要的数据:
{
"Vpcs": [
{
"VpcId": "vpc-1",
"OwnerId": "abc"
},
{
"VpcId": "vpc-2",
"OwnerId": "def"
}
]
}
我怎样才能得到像这样的结果:
{
"Vpcs": [
{
"VpcId": "vpc-2",
"OwnerId": "def"
}
]
}
答案1
如果“重建”你的结构是一个选择,你可以这样做
jq '.Vpcs[]|select(.OwnerId!="abc")|{Vpcs: [.]}'