过滤且表格化输出结果

更新时间:

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

--output选项字段说明

为了使命令输出结果更直观,阿里云CLI提供了--output选项,您可以使用该选项提取返回结果中感兴趣的字段,且默认以表格形式输出。

--output选项包含以下字段:

字段名

描述

示例值

cols

表格列名。

使用--output选项时需要以cols="<column1>,<column2>"形式确定表格与数据的映射关系。多个列名之间使用逗号,隔开。

  • JSON数据为object键值对类型,该字段需要与数据对应键名保持一致。

  • JSON数据为array数组类型,该字段可自定义显示名称,同时您需要手动添加数组元素索引。列名与索引之间使用冒号:隔开。

  • object类型:cols="InstanceId,Status"

  • array类型:cols="name:0,type:1"

rows

待过滤数据所在的JMESPath路径。

阿里云CLI将通过JMESPath查询语句来指定表格行在JSON结果中的数据来源。

rows="Instances.Instance[]"

num

开启行号显示。

指定该字段为true可开启行号显示,开启后阿里云CLI将在表格左侧新增行号列并输出行号,起始行号为0。该字段默认值为false

num="true"

过滤示例

示例场景

阿里云产品的查询接口会返回JSON结构化数据,不方便阅读。

  1. 以查询所有ECS实例信息为例,执行如下命令。

    aliyun ecs DescribeInstances
  2. 系统显示类似如下输出结果(部分省略)。

    {
      "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-1234567891234567****",
            "Status": "Stopped",
            "SecurityGroupIds": {
              "SecurityGroupId": [
                "sg-bp12345678912345****",
                "sg-bp98765432198765****"
              ]
            }
          },
          {
            "ImageId": "ubuntu_16_0402_64_20G_alibase_20171227.vhd",
            "InstanceTypeFamily": "ecs.xn4",
            "VlanId": "",
            "InstanceId": "i-abcdefghijklmnop****",
            "Status": "Running",
            "SecurityGroupIds": {
              "SecurityGroupId": [
                "sg-bp1abcdefghijklm****",
                "sg-bp1zyxwvutsrqpon****"
              ]
            }
          }
        ]
      }
    }

示例一

  1. 执行如下命令,过滤示例场景返回结果中的字段RequestId。该字段作为根元素,无需指定rows字段。

    aliyun ecs DescribeInstances --output cols=RequestId
  2. 系统显示类似如下输出结果。

    RequestId
    ---------
    2B76ECBD-A296-407E-BE17-7E668A609DDA

示例二

  1. 执行如下命令,过滤示例场景返回结果中的字段InstanceId以及Status。这两个字段所在的JMESPath路径为Instances.Instance[],则rows="Instances.Instance[]"。具体JMESPath书写方法,请参见JMESPath Tutorial

    aliyun ecs DescribeInstances --output cols="InstanceId,Status" rows="Instances.Instance[]"
  2. 系统显示类似如下输出结果。

    InstanceId             | Status
    ----------             | ------
    i-12345678912345678123 | Stopped
    i-abcdefghijklmnopqrst | Running
  3. 如果需要输出行号,则指定num=true,系统显示类似如下输出结果。

    Num | InstanceId             | Status
    --- | ----------             | ------
    0   | i-12345678912345678123 | Stopped
    1   | i-abcdefghijklmnopqrst | Running

示例三

  1. 执行如下命令,过滤示例场景返回结果中的数组类型字段SecurityGroupId的具体元素。数组所在的JMESPath路径为Instances.Instance[].SecurityGroupIds.SecurityGroupId

    aliyun ecs DescribeInstances --output cols="sg1:0,sg2:1" rows="Instances.Instance[].SecurityGroupIds.SecurityGroupId"
  2. 系统显示类似如下输出结果。

    sg1                     | sg2
    ---                     | ---
    sg-bp11234567891234**** | sg-bp19876543219876****
    sg-bp1abcdefghijklm**** | sg-bp1zyxwvutsrqpon****