我运行了一个aws rds describe-instances,得到了一个实例的json数组,大致如下所示:
"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) DBInstanceIdentifier和EngineVersion
发布于 2021-07-07 11:52:11
您可以使用以下JQ过滤器:
.DBInstances[] | [ .DBInstanceIdentifier, .EngineVersion ]哪里
.DBInstances[]遍历DBInstances数组[ .DBInstanceIdentifier, .EngineVersion ]创建一个只包含DBInstanceIdentifier和EngineVersion键的数组。jq '.DBInstances[] | [ .DBInstanceIdentifier, .EngineVersion ]'对于当前的JSON示例( DBInstances数组中只有1项),结果是:
[
"my-rds",
"11.9"
]发布于 2021-07-07 09:27:00
不是用.jq解决的,而是使用aws cli特性解决的:
aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier, EngineVersion]' https://stackoverflow.com/questions/68282553
复制相似问题