다음과 같은 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: [.]}'