[英]How to extract a value as a column from JSON with multiple key-value lists using (a materialized view compatible) SQL?
[英]Extract an array of key-value pairs using JQ and from pre-filtered JSON
我想從下面的 JSON 中提取一組鍵值對,這是由以下 AWS CLI 腳本生成的。 該數組應包含負載均衡器名稱。
aws elbv2 describe-load-balancers | jq '.LoadBalancers[] | select(.LoadBalancerName | startswith("MY_LOAD_BALANCER_NAME"))'
我試着在這個腳本的末尾添加一個 JQ 過濾器,如下所示,但它不起作用:
aws elbv2 describe-load-balancers | jq '.LoadBalancers[] | select(.LoadBalancerName | startswith("MY_LOAD_BALANCER_NAME"))' | jq -r .LoadBalancers[].LoadBalancerName
這是我的 JSON output 的簡短版本:
{
"LoadBalancers": [
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing...",
"CreatedTime": "2023-01-26T22:26:42.313000+00:00",
"LoadBalancerName": "elb_name_123"
},
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing...",
"CreatedTime": "2023-01-26T22:26:42.313000+00:00",
"LoadBalancerName": "elb_name_456"
},
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing...",
"CreatedTime": "2023-01-26T22:26:42.313000+00:00",
"LoadBalancerName": "elb_name_789"
}
]
}
不知道這是不是你要的output格式。 這個怎么樣?
cat output.json | jq '[.LoadBalancers[] | select(.LoadBalancerName | startswith("elb_name")) | { LoadBalancerName: .LoadBalancerName } ]'
[
{
"LoadBalancerName": "elb_name_123"
},
{
"LoadBalancerName": "elb_name_456"
},
{
"LoadBalancerName": "elb_name_789"
}
]
$ cat output.json
{
"LoadBalancers": [
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing...",
"CreatedTime": "2023-01-26T22:26:42.313000+00:00",
"LoadBalancerName": "elb_name_123"
},
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing...",
"CreatedTime": "2023-01-26T22:26:42.313000+00:00",
"LoadBalancerName": "elb_name_456"
},
{
"LoadBalancerArn": "arn:aws:elasticloadbalancing...",
"CreatedTime": "2023-01-26T22:26:42.313000+00:00",
"LoadBalancerName": "elb_name_789"
}
]
}
您不需要使用額外的jq
來過濾 AWS cli 已經支持 jmespath。
您可以使用starts_with
過濾負載均衡器
aws elbv2 describe-load-balancers --query 'LoadBalancers[?starts_with(LoadBalancerName, `elb_name`)].LoadBalancerName'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.