如果键名称与“名称”匹配,则使用jq提取键值

时间:2018-12-02 08:59:23

标签: json select key jq aws-cli

仅当键名称为Name时,我才需要使用jq提取键值。下面是一个例子。我有一些AMI,它们的键名没有Name,我想忽略它们。

aws ec2 describe-snapshots --snapshot-id snap-123 --region eu-west-1 --profile myprofile
{
    "Snapshots": [
        {
            "Description": "AMI upgrader",
            "Tags": [
                {
                    "Value": "AMI upgrader",
                    "Key": "Name"
                }
            ],
            "Encrypted": false,
            "VolumeId": "vol-9356e811",
            "State": "completed",
            "VolumeSize": 20,
            "StartTime": "2018-05-31T13:58:31.000Z",
            "Progress": "100%",
            "OwnerId": "1234",
            "SnapshotId": "snap-1234"
        }
    ]
}

我已经尝试过了

aws ec2 describe-snapshots --snapshot-id snap-123 --region eu-west-1 --profile myprofile | jq -r '.Snapshots[].Tags[]|.Name?.Value'

但是它返回null

1 个答案:

答案 0 :(得分:2)

您可以使用select

jq -r '.Snapshots[].Tags[] | select(.Key == "Name").Value'