过滤且表格化输出结果
阿里云产品的查询接口会返回JSON结构化数据,不方便阅读。您可以通过使用阿里云CLI的高级过滤功能,获取您感兴趣的字段,且默认表格化输出。
--output 选项字段说明
为了使命令输出结果更直观,阿里云CLI提供了 --output
选项,用以提取结果中感兴趣的字段,且默认表格化输出。
--output
包含以下字段:
字段名 | 描述 | 补充说明 |
cols | 表格的列名,需要与 JSON 数据中的字段相对应。 | 例如,ECS DescribeInstances 接口返回结果中的字段 InstanceId 以及 Status。 |
rows | 指定过滤字段所在的JMESPath路径。 | 通过jmespath查询语句来指定表格行在JSON结果中的数据来源。 |
num | 指定 | 默认 |
示例场景
阿里云产品的查询接口会返回JSON结构化数据,不方便阅读。例如,执行如下命令,查询所有ECS实例信息。
aliyun ecs DescribeInstances
系统显示类似如下输出:
{
"PageNumber": 1,
"TotalCount": 2,
"PageSize": 10,
"RequestId": "2B76ECBD-A296-407E-BE17-7E668A609DDA",
"Instances": {
"Instance": [
{
"ImageId": "ubuntu_16_0402_64_20G_alibase_20171227.vhd",
"InstanceTypeFamily": "ecs.xn4",
"VlanId": "",
"InstanceId": "i-12345678912345678123",
"Status": "Stopped",
//omit some fields
},
Instance": [
{
"ImageId": "ubuntu_16_0402_64_20G_alibase_20171227.vhd",
"InstanceTypeFamily": "ecs.xn4",
"VlanId": "",
"InstanceId": "i-abcdefghijklmnopqrst",
"Status": "Running",
//omit some fields
},
]
}
}
示例命令
执行如下命令,过滤示例场景返回结果中的字段 RequestId,该字段为根元素,无需指定 rows 字段。
aliyun ecs DescribeInstances --output cols=RequestId
系统显示类似如下输出结果:
RequestId --------- 2B76ECBD-A296-407E-BE17-7E668A609DDA
执行如下命令,过滤示例场景返回结果中的字段 InstanceId 以及 Status。这两个字段所在的JMESPath路径为
Instances.Instance[]
,则rows="Instances.Instance[]"
。具体JMESPath书写方法,请参见JMESPath Tutorial。aliyun ecs DescribeInstances --output cols="InstanceId,Status" rows="Instances.Instance[]"
系统显示类似如下输出结果:
InstanceId | Status ---------- | ------ i-12345678912345678123 | Stopped i-abcdefghijklmnopqrst | Running
若输出行号,则指定
num=true
,输出结果类似如下:Num | InstanceId | Status --- | ---------- | ------ 0 | i-12345678912345678123 | Stopped 1 | i-abcdefghijklmnopqrst | Running