我正在尝试解析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>
如果您提供解决方案,那么进行一些小的说明也将有所帮助。预先感谢您的帮助!
答案 0 :(得分:3)
如果输出为json格式,则不建议使用sed
来解析json / xml ... input。
您可以在外壳程序中使用jq
,例如:
..cmd to get yourOutput..|jq '.LoadBalancers[0].LoadBalancerArn'