【问题标题】:Extract an array of key-value pairs using JQ and from pre-filtered JSON使用 JQ 和预过滤的 JSON 提取键值对数组
【发布时间】:2023-01-31 21:26:59
【问题描述】:

我想从下面的 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 输出的简化版本:

{
    "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"
        }
    ]
}

【问题讨论】:

    标签: json jq aws-cli


    【解决方案1】:

    我不知道这是不是你想要的输出格式。这个怎么样?

    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"
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多