[英]Using jq to parse json output of AWS CLI
我想使用jq( http://stedolan.github.io/jq/ )來解析來自aws elb describe-load-balancers的json輸出,並僅在AvailabilityZones包含特定值的地方返回名稱和AZ。
這是代表源輸出的部分編輯json:
{
"LoadBalancerDescriptions": [
{
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
],
"CanonicalHostedZoneName": "example.us-east-1.elb.amazonaws.com",
在指定AvailabilityZones鍵的完整值列表時,我只能使其工作。
$ aws elb describe-load-balancers --region us-east-1 |jq '.LoadBalancerDescriptions[] | select(.AvailabilityZones == ["us-east-1b", "us-east-1c", "us-east-1d"]) | .CanonicalHostedZoneName, .AvailabilityZones'
上面的工作,但我想只選擇它是否包含“us-east-1b”的值,而不管其他值。
也許這可行:
aws elb describe-load-balancers --region us-east-1 | jq '.LoadBalancerDescriptions[] | select((.AvailabilityZones[] | select(. == "us-east-1b")) == "us-east-1b") | .CanonicalHostedZoneName, .AvailabilityZones'
我實際測試了這樣的輸入:
{
"LoadBalancerDescriptions": [
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
]
}
]
}
並運行此命令:
jq '.LoadBalancerDescriptions[] | select((.AvailabilityZones[] | select(. == "us-east-1b")) == "us-east-1b")' input_file
然后我得到了:
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
]
}
另一個輸入:
{
"LoadBalancerDescriptions": [
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
]
},
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c"
]
},
{
"AvailabilityZones": [
"us-east-1d"
]
}
]
}
輸出:
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c",
"us-east-1d"
]
}
{
"AvailabilityZones": [
"us-east-1b",
"us-east-1c"
]
}
您可能可以使用該概念來驗證表示數組的鍵是否包含類似的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.