全部產品
Search
文件中心

Alibaba Cloud CLI:過濾且表格化輸出結果

更新時間:May 21, 2026

阿里雲 CLI 命令的返回結果為 JSON 格式。通過 --cli-query 選項可使用 JMESPath 運算式提取特定欄位(輸出仍為 JSON),通過 --output 選項可將結果轉為表格顯示。兩者也可組合使用:先過濾,再表格化。

說明

使用本文中的命令前,需要先安裝並配置阿里雲 CLI。具體操作,請參見安裝/更新阿里雲 CLI配置與管理身份憑證

使用 --cli-query 過濾 JSON 輸出

--cli-query 選項接受 JMESPath 運算式,過濾 API 返回的 JSON 結果。輸出仍為 JSON 格式,適合在指令碼中使用或通過 jq 等工具進一步處理。

基本文法:

aliyun <product> <operation> --cli-query "<JMESPath運算式>"

以下樣本均基於 ECS describe-instances 的返回結果,示範常見過濾用法。

樣本一:提取單個欄位列表

提取所有執行個體的 InstanceId

aliyun ecs describe-instances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].InstanceId"

返回結果樣本:

[
  "i-1234567891234567****",
  "i-abcdefghijklmnop****"
]

樣本二:提取多個欄位

同時提取 InstanceIdStatus 兩個欄位。

aliyun ecs describe-instances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].[InstanceId,Status]"

返回結果樣本:

[
  [
    "i-1234567891234567****",
    "Stopped"
  ],
  [
    "i-abcdefghijklmnop****",
    "Running"
  ]
]

樣本三:條件過濾

僅返回狀態為 Running 的執行個體 ID。

aliyun ecs describe-instances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[?Status=='Running'].InstanceId"

返回結果樣本:

[
  "i-abcdefghijklmnop****"
]

樣本四:重塑輸出結構

使用 JMESPath 的多選雜湊表達式,將返回結果重新組織為自訂鍵名的對象數組。

aliyun ecs describe-instances --biz-region-id cn-hangzhou --cli-query "Instances.Instance[].{id:InstanceId,status:Status}"

返回結果樣本:

[
  {
    "id": "i-1234567891234567****",
    "status": "Stopped"
  },
  {
    "id": "i-abcdefghijklmnop****",
    "status": "Running"
  }
]
說明

以上樣本僅覆蓋常用文法。JMESPath 還支援管道運算式、內建函數等進階功能,完整文法請參見 JMESPath Tutorial

如果 --cli-query 返回 null,請檢查運算式中的欄位名是否與 API 返回的 JSON 鍵名完全一致(區分大小寫)。

選型指引

根據使用情境選擇合適的選項:

情境

適用選項

說明

在指令碼中提取特定值

--cli-query

輸出為 JSON,方便 jq 等工具繼續處理

在終端中快速探索資料

--output

表格形式更易讀

先過濾資料再表格化顯示

兩者組合使用

--cli-query 先過濾或重塑資料,--output 再轉為表格。參見下方過濾樣本中的樣本四。

--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 文法指定 JSON 結果中的資料位元置。

rows="Instances.Instance[]"

num

開啟行號顯示。

設定為 true 時,阿里雲 CLI 在表格左側新增行號列,起始行號為 0(非 1)。預設值為 false

num="true"

過濾樣本

樣本情境

阿里雲產品的查詢介面會返回 JSON 結構化資料,不方便閱讀。

  1. 以查詢所有 ECS 執行個體資訊為例,執行如下命令。

    aliyun ecs describe-instances --biz-region-id cn-hangzhou
  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 describe-instances --biz-region-id cn-hangzhou --output cols=RequestId
  2. 系統顯示類似如下輸出結果。

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

樣本二

  1. 執行如下命令,過濾樣本情境返回結果中的欄位 InstanceId 以及 Status。這兩個欄位所在的 JMESPath 路徑為 Instances.Instance[],因此指定 rows="Instances.Instance[]"。具體 JMESPath 書寫方法,請參見 JMESPath Tutorial

    aliyun ecs describe-instances --biz-region-id cn-hangzhou --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 describe-instances --biz-region-id cn-hangzhou --output cols="sg1:0,sg2:1" rows="Instances.Instance[].SecurityGroupIds.SecurityGroupId"
  2. 系統顯示類似如下輸出結果。

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