过滤且表格化输出结果

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