使用 jq 过滤掉元素的特定 json 数组字段

帕卡莫尔

我运行 aaws rds describe-instancesjson或多或少地得到了一个实例数组,如下所示:

"DBInstances": [
        {
            "DBInstanceIdentifier": "my-rds",
            "Endpoint": {
                "HostedZoneId": "XXXXXXXXXXXX"
            },
            "DBSecurityGroups": [],
            "VpcSecurityGroups": [
                {
                    "VpcSecurityGroupId": "sg-12345",
                    "Status": "active"
                },
                {
                    "VpcSecurityGroupId": "sg-12345",
                    "Status": "active"
                }
            ],
            "DBParameterGroups": [
                {
                    "DBParameterGroupName": "postgres-12",
                    "ParameterApplyStatus": "in-sync"
                }
            ],
            "AvailabilityZone": "us-west-1c",
            "DBSubnetGroup": {
                "VpcId": "vpc-123456",
                "SubnetGroupStatus": "Complete",
                "Subnets": [
                    {
                        "SubnetIdentifier": "subnet-123456",
                        "SubnetAvailabilityZone": {
                            "Name": "us-west-1b"
                        },
                        "SubnetOutpost": {},
                        "SubnetStatus": "Active"
                    },
                    {
                        "SubnetIdentifier": "subnet-12345",
                        "SubnetAvailabilityZone": {
                            "Name": "us-west-1c"
                        },
                        "SubnetOutpost": {},
                        "SubnetStatus": "Active"
                    },
                    {
                        "SubnetIdentifier": "subnet-12345",
                        "SubnetAvailabilityZone": {
                            "Name": "us-west-1e"
                        },
                        "SubnetOutpost": {},
                        "SubnetStatus": "Active"
                    }
                ]
            },
            "EngineVersion": "11.9",
            "AutoMinorVersionUpgrade": true,
            "ReadReplicaDBInstanceIdentifiers": [],
            "LicenseModel": "foobar",
            "OptionGroupMemberships": [
                {
                    "OptionGroupName": "randomname",
                    "Status": "in-sync"
                }
            ],
        },
    }

输出明显截断。

有没有办法使用(jq可能?)打印:

a)DBInstances数组的所有元素

并且只为每个元素打印

b)DBInstanceIdentifierEngineVersion?

0石0

您可以使用以下 JQ 过滤器:

.DBInstances[] | [ .DBInstanceIdentifier, .EngineVersion ]

在哪里

  • .DBInstances[]DBInstances数组上循环
  • [ .DBInstanceIdentifier, .EngineVersion ]创建一个只包含DBInstanceIdentifierEngineVersion的数组
jq '.DBInstances[] | [ .DBInstanceIdentifier, .EngineVersion ]'
JqPlay 演示

从您当前的 JSON 示例(DBInstances数组中只有 1 个项目)开始,结果是:

[
  "my-rds",
  "11.9"
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章