Как просто вывести правильный результат с ключом и значением? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть json, как показано ниже:

[
    {
      "AvailabilityZone": "ap-northeast-1a",
      "Tags": [
        {
          "Value": "value1",
          "Key": "key1"
        },
        {
          "Value": "value2",
          "Key": "key2"
        }
      ],
    },
    {
          "AvailabilityZone": "ap-northeast-1a",
          "Tags": [
            {
              "Value": "value3",
              "Key": "key3"
            },
            {
              "Value": "value4",
              "Key": "key4"
            }
          ],
        },
]

, когда я ввожу ключ и значение с клавиатуры.Я хочу просто вывести правильный результат с ключом и значением через опцию jq.

Пример: я ввожу ключ: значение равно key3: значение3.Мое желание:

{
      "AvailabilityZone": "ap-northeast-1a",
      "Tags": [
        {
          "Value": "value3",
          "Key": "key3"
        },
        {
          "Value": "value4",
          "Key": "key4"
        }
      ],
}

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Используйте команду select, чтобы отфильтровать массив под тегами:

jq '.[].Tags | select((.[].Key == "key3") and (.[].Value="value3"))  ' < file.json

Вместе с чтением ключа и значения из стандартного ввода:

echo key3 value3 | (
    read key value
    k=$key v=$value jq ".[].Tags
        | select((.[].Key == env.k) and (.[].Value=env.v))
    " < file.json)
0 голосов
/ 11 октября 2018

Похоже, вы используете aws cli для получения подробных сведений о томе, вы можете использовать свойства фильтров aws cli для фильтрации результатов вашего запроса.
Здесь вы можете использовать ниже:
aws ec2 describe-volumes --filters Name=tag-key,Values="key3" Name=tag-value,Values="value3"

Дополнительную справку можно получить по адресу:
aws ec2 describe-volumes help

Я думаю, это будет проще, чем фильтрация с использованием jq.

...