解析输出并将特定行传递到以下命令

时间:2018-08-29 13:17:28

标签: bash shell amazon-web-services sed

我正在尝试解析aws cli的输出并将其传递给另一个参数。我正在尝试使用sed来完成此任务,并坚持如何使用它,我读过其他文章,但似乎无法弄清楚。

输出:

{
 "LoadBalancers": [
  {
      "Type": "network",
      "Scheme": "internet-facing",
      "IpAddressType": "ipv4",
      "VpcId": "vpc-3ac0fb5f",
      "AvailabilityZones": [
          {
              "LoadBalancerAddresses": [
                  {
                      "IpAddress": "35.161.207.171",
                      "AllocationId": "eipalloc-64d5890a"
                  }
              ],
              "ZoneName": "us-west-2b",
              "SubnetId": "subnet-5264e837"
          }
      ],
      "CreatedTime": "2017-10-15T22:41:25.657Z",
      "CanonicalHostedZoneId": "Z2P70J7EXAMPLE",
      "DNSName": "my-network-load-balancer-5d1b75f4f1cee11e.elb.us-west-2.amazonaws.com",
      "LoadBalancerName": "my-network-load-balancer",
      "State": {
          "Code": "provisioning"
      },
      "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/net/my-network-load-balancer/5d1b75f4f1cee11e"
  }
 ]
}

我要捕获的字符串是

arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/net/my-network-load-balancer/5d1b75f4f1cee11e

并将其传递给以下命令:

aws elbv2 delete-load-balancer --load-balancer-arn <the arn extracted from the previous output>

如果您提供解决方案,那么进行一些小的说明也将有所帮助。预先感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

如果输出为json格式,则不建议使用sed来解析json / xml ... input。

您可以在外壳程序中使用jq,例如:

..cmd to get yourOutput..|jq '.LoadBalancers[0].LoadBalancerArn'