Как отфильтровать ключ и значение, используя фильтр JQ в Bash - PullRequest
0 голосов
/ 25 октября 2018

После выполнения следующей команды

aws ec2 describe-tags --filter "Name=resource-id,Values=i-8dh7435490fjksfd"

У меня есть следующий вывод JSON

{
    "Tags": [
        {
            "ResourceType": "instance", 
            "ResourceId": "i-8dh7435490fjksfd", 
            "Value": "production", 
            "Key": "Environment"
        }, 
        {
            "ResourceType": "instance", 
            "ResourceId": "i-8dh7435490fjksfd", 
            "Value": "webserver", 
            "Key": "Application"
        }
    ]
}

Как получить следующий вывод с использованием фильтра jq

Приложение: веб-сервер

Ответы [ 3 ]

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

Раствор без использования jq

aws ec2 describe-tags   --filter "Name=resource-id,Values=i-8dh7435490fjksfd" --query 'Tags[?Key==`Application`].Value[]' --output text
0 голосов
/ 28 октября 2018

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

cat example.json | jq '.[] | {(.[].Key): (.[].Value)}'

Вывод:

{
  "Environment": "production"
}
{
  "Environment": "webserver"
}
{
  "Application": "production"
}
{
  "Application": "webserver"
}

Ссылка: https://stedolan.github.io/jq/manual/

0 голосов
/ 25 октября 2018
.Tags[]
| select(.Key == "Application")
| "\(.Key) : \(.Value)"
...