阿里云产品的查询接口会返回JSON结构化数据,不方便阅读。您可以通过使用阿里云CLI的高级过滤功能,获取您感兴趣的字段,且默认表格化输出。

--output选项字段说明

为了使命令输出结果更直观,阿里云CLI提供了--output选项,用以提取结果中感兴趣的字段,且默认表格化输出。--output包含以下字段:
字段名 描述 补充说明
cols 表格的列名,需要与json数据中的字段相对应。 例如,ECS DescribeInstances接口返回结果中的字段InstanceId以及Status
rows 指定过滤字段所在的JMESPath路径。 通过jmespath查询语句来指定表格行在json结果中的数据来源。
num 指定num=true,开启行号列,行号以数字0开始。 默认num=false

示例场景

阿里云产品的查询接口会返回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