如何在bash中使用jq过滤器过滤键和值

时间:2018-10-25 18:17:25

标签: json bash amazon-web-services jq aws-cli

运行以下命令后

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 :(得分:3)

不使用jq

的解决方案
aws ec2 describe-tags   --filter "Name=resource-id,Values=i-8dh7435490fjksfd" --query 'Tags[?Key==`Application`].Value[]' --output text

答案 1 :(得分:2)

https://mycorp.b2clogin.com/mycorp.onmicrosoft.com/oauth2/v2.0/authorize?
p=B2C_1_Login&client_id=(my_client_id)
&nonce=defaultNonce
&redirect_uri=http%3A%2F%2Flocalhost%3A8080
&scope=openid&response_type=id_token&prompt=login

答案 2 :(得分:-1)

您可以使用jq以这种方式获得它。在键周围加上括号意味着它将被作为表达式求值。

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

输出:

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

参考:https://stedolan.github.io/jq/manual/