使用jq,如何選擇父對象(如果它包含滿足兩個過濾器要求的子對象)?使用jq通過搜索子鍵/值對來選擇父項
在這個例子中,我想選擇所有子網元素都有一個帶有「Name」鍵和值「TheName」的子標籤。我的例子有兩個子網。第一個在錯誤的關鍵中有「TheName」。第二個子網具有我正在查找的名稱/值對。即"Key": "Name", "Value": "TheName"
以下選擇其中一個標籤但沒有配對的指定值的子網。它返回兩個子網,而不是僅返回第二個子網。
jq '.Subnets[] | select(.Tags[].Value=="TheName")' output
如何使用jq只選擇具有名稱/值對的子網我正在尋找?
{
"Subnets": [
{
"VpcId": "vpc-12345678",
"SubnetId": "subnet-1234567a",
"Tags": [
{
"Key": "IgnoreThis",
"Value": "TheName"
},
{
"Key": "Name",
"Value": "NotTheName"
}
]
},
{
"VpcId": "vpc-12345678",
"SubnetId": "subnet-1234567b",
"Tags": [
{
"Key": "IgnoreThis",
"Value": "ignore"
},
{
"Key": "Name",
"Value": "TheName"
}
]
}
]
}
所需的輸出將是:
{
"VpcId": "vpc-12345678",
"SubnetId": "subnet-1234567b",
"Tags": [
{
"Key": "IgnoreThis",
"Value": "ignore"
},
{
"Key": "Name",
"Value": "TheName"
}
]
}
最喜歡的寫得好的Unix命令,'jq'可以讀取的文件名參數,以使得['cat'是無用](HTTP的溶液:// WWW .iki.fi/era/unix/award.html) – tripleee