需要根据另一个值

时间:2015-09-07 01:37:53

标签: json bash

我正在尝试使用EC2现货船队请求。我需要根据ImageId的传入值提取SpotFleetRequestId。我无法弄清楚。有人可以帮忙吗?这是json:

{

“SpotFleetRequestConfigs”:[       {           “SpotFleetRequestId”:“sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE”,           “SpotFleetRequestConfig”:{               “TargetCapacity”:20,               “LaunchSpecifications”:[                   {                       “EbsOptimized”:false,                       “NetworkInterfaces”:[                           {                               “SubnetId”:“subnet-a61dafcf”,                               “DeviceIndex”:0,                               “DeleteOnTermination”:false,                               “AssociatePublicIpAddress”:是的,                               “SecondaryPrivateIpAddressCount”:0                           }                       ]                       “InstanceType”:“cc2.8xlarge”,                       “ImageId”:“ami-1a2b3c4d”                   },                   {                       “EbsOptimized”:false,                       “NetworkInterfaces”:[                           {                               “SubnetId”:“subnet-a61dafcf”,                               “DeviceIndex”:0,                               “DeleteOnTermination”:false,                               “AssociatePublicIpAddress”:是的,                               “SecondaryPrivateIpAddressCount”:0                           }                       ]                       “InstanceType”:“r3.8xlarge”,                       “ImageId”:“ami-1a2b3c4d”                   }               ]               “SpotPrice”:“0.05”,               “IamFleetRole”:“arn:aws:iam :: 123456789012:role / my-spot-fleet-role”           },           “SpotFleetRequestState”:“活跃”       },       {           “SpotFleetRequestId”:“sfr-306341ed-9739-402e-881b-ce47bEXAMPLE”,           “SpotFleetRequestConfig”:{               “TargetCapacity”:20,               “LaunchSpecifications”:[                   {                       “EbsOptimized”:false,                       “NetworkInterfaces”:[                           {                               “SubnetId”:“subnet-6e7f829e”,                               “DeviceIndex”:0,                               “DeleteOnTermination”:false,                               “AssociatePublicIpAddress”:是的,                               “SecondaryPrivateIpAddressCount”:0                           }                       ]                       “InstanceType”:“m3.medium”,                       “ImageId”:“ami-1a2b3c4d”                   }               ]               “SpotPrice”:“0.05”,               “IamFleetRole”:“arn:aws:iam :: 123456789012:role / my-spot-fleet-role”           },           “SpotFleetRequestState”:“活跃”       }   ] }

1 个答案:

答案 0 :(得分:0)

不完全确定你的意思,但是这个:

echo "$json" | grep -o '\(SpotFleetRequestId\|ImageId\): [0-9A-Za-z-]\+' | uniq

产生这个:

SpotFleetRequestId: sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
ImageId: ami-1a2b3c4d
SpotFleetRequestId: sfr-306341ed-9739-402e-881b-ce47bEXAMPLE
ImageId: ami-1a2b3c4d
相关问题