代码之家  ›  专栏  ›  技术社区  ›  eekfonky

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

  •  1
  • eekfonky  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  2
  •   oguz ismail    6 年前

    你可以使用 select :

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