AliyunCLI 过滤功能使用说明

赞赏 2016-07-12

AliyunCLI支持使用filter参数对指令返回的结果进行过滤输出。从开放API调用返回数据, 默认采用Json格式,所以用户在使用AliyunCLI时, 可以根据Json的特点, 使用过滤功能直接获取所需子节点数据。

下面举例说明:


原始数据:

# aliyuncli ecs DescribeImages   --ImageOwnerAlias system --output json --PageSize 1 --PageNumber 1

{

      "PageSize": 1,

      "RegionId": "cn-hangzhou",

      "TotalCount": 39,

      "PageNumber": 1,

      "RequestId":   "A0F91B21-BD8D-48D9-9EC8-36FB7E1D387E",

      "Images": {

          "Image": [

            {

                "Status":   "Available",

                "ProductCode":   "",

                "Platform":   "Freebsd",

                "Description":   "freebsd1001_64_20G_aliaegis_20150527.vhd",

                "IsCopied": false,

                "Tags": {

                    "Tag": []

                },

                "IsSubscribed":   false,

                "IsSelfShared":   "",

                "CreationTime":   "2015-06-19T10:45:56Z",

                "OSName":   "FreeBSD  10.1 64\u4f4d",

                  "DiskDeviceMappings": {

                    "DiskDeviceMapping":   [

                        {

                              "Format": "",

                              "ImportOSSBucket": "",

                              "Device": "/dev/xvda",

                              "SnapshotId": "",

                            "ImportOSSObject":   "",

                            "Size":   "20"

                        }

                    ]

                },

                "ImageId":   "freebsd1001_64_20G_aliaegis_20150527.vhd",

                "Usage":   "instance",

                  "ImageName":   "freebsd1001_64_20G_aliaegis_20150527.vhd",

                "Architecture":   "x86_64",

                "ImageOwnerAlias":   "system",

                "OSType":   "linux",

                "Progress":   "100%",

                "ImageVersion":   "1.0.0",

                "Size": 20

            }

          ]

      }

}

 

用法示例:

示例1:指定key值进行过滤,获取对应value

如果通过filter传入的key值是最末节点,则会返回其对应的value。

  过滤方法示例

只过滤输出返回结果中的TotalCount字段对应值:

# aliyuncli ecs DescribeImages   --ImageOwnerAlias system --output json --PageSize 1 --PageNumber 1 --filter   TotalCount

39

 

示例2:指定key值进行过滤,获取所有子节点数据

如果通过filter传入的key值非最末节点,则会返回其下所有子节点数据。

  过滤方法示例

过滤输出返回结果中所有Image相关信息:

# aliyuncli ecs DescribeImages   --ImageOwnerAlias system --output json --PageSize 1 --PageNumber 1   --filter Images

{

      "Image": [

          {

            "Status":   "Available",

            "ProductCode":   "",

            "Platform":   "Freebsd",

            "Description":   "freebsd1001_64_20G_aliaegis_20150527.vhd",

            "IsCopied": false,

            "Tags": {

                "Tag": []

            },

            "IsSubscribed": false,

            "IsSelfShared":   "",

            "CreationTime":   "2015-06-19T10:45:56Z",

            "OSName":   "FreeBSD  10.1 64\u4f4d",

            "DiskDeviceMappings": {

                  "DiskDeviceMapping": [

                    {

                        "Format":   "",

                          "ImportOSSBucket": "",

                        "Device":   "/dev/xvda",

                          "SnapshotId": "",

                        "ImportOSSObject":   "",

                        "Size":   "20"

                    }

                ]

            },

            "ImageId":   "freebsd1001_64_20G_aliaegis_20150527.vhd",

            "Usage":   "instance",

            "ImageName":   "freebsd1001_64_20G_aliaegis_20150527.vhd",

            "Architecture":   "x86_64",

            "ImageOwnerAlias":   "system",

            "OSType":   "linux",

            "Progress":   "100%",

            "ImageVersion":   "1.0.0",

            "Size": 20

          }

      ]

}

 

示例3:通过数组下标获取返回数组(array)中指定子项值

如果返回结果中包含数组(array)数据,则可以通过filter传入指定序列编号获取相应子项值。

注意:数组下标从0开始计数。

   过滤方法示例

过滤输出返回结果中第1个Image的所有相关信息:

# aliyuncli ecs DescribeImages   --ImageOwnerAlias system --output json --PageSize 1 --PageNumber 1   --filter Images.Image[0]

{

      "Status": "Available",

      "ProductCode": "",

      "Platform": "Freebsd",

      "Description":   "freebsd1001_64_20G_aliaegis_20150527.vhd",

      "IsCopied": false,

      "Tags": {

          "Tag": []

      },

      "IsSubscribed": false,

      "IsSelfShared": "",

      "CreationTime": "2015-06-19T10:45:56Z",

      "OSName": "FreeBSD    10.1 64\u4f4d",

      "DiskDeviceMappings": {

          "DiskDeviceMapping": [

            {

                "Format":   "",

                "ImportOSSBucket": "",  

                "Device":   "/dev/xvda",

                "SnapshotId":   "",

                "ImportOSSObject":   "",

                "Size":   "20"

            }

          ]

      },

      "ImageId": "freebsd1001_64_20G_aliaegis_20150527.vhd",  

      "Usage": "instance",

      "ImageName":   "freebsd1001_64_20G_aliaegis_20150527.vhd",

      "Architecture": "x86_64",

      "ImageOwnerAlias": "system",

      "OSType": "linux",

      "Progress": "100%",

      "ImageVersion": "1.0.0",

      "Size": 20

}

 

示例4:通过数组下标获取返回数组(array)子项下指定字段对应值

如果返回结果中包含数组(array)数据,则可以通过filter传入指定序列编号和所需字段,获取相应子项下所需字段值。

注意:数组下标从0开始计数。

   过滤方法示例

过滤输出返回结果中第1个Image的ImageId值:

# aliyuncli ecs DescribeImages   --ImageOwnerAlias system --output json --PageSize 1 --PageNumber 1   --filter Images.Image[0].ImageId

"freebsd1001_64_20G_aliaegis_20150527.vhd"

 

示例5:通过*号获取返回数组(array)中所有子项下指定字段对应值

如果返回结果中包含数组(array)数据,则可以通过filter传入*号和所需字段,获取所有子项下所需字段值。

   过滤方法示例

过滤输出返回结果中所有ImageId值:

# aliyuncli ecs DescribeImages   --ImageOwnerAlias system --output json --PageSize 1 --PageNumber 1   --filter Images.Image[*].ImageId

[

      "freebsd1001_64_20G_aliaegis_20150527.vhd"

]

 

示例6:嵌套过滤

如果返回结果中包含的数组(array)数据的子节点也是数组,则可以通过嵌套过滤获取所需子项下的所需字段值。

   过滤方法示例

过滤输出返回结果中指定编号Image的所生成磁盘的Device信息:

# aliyuncli ecs DescribeImages   --ImageOwnerAlias system --output json --PageSize 1 --PageNumber 1 --filter   Images.Image[0].DiskDeviceMappings.DiskDeviceMapping[0].Device

"/dev/xvda"

登陆后阅读全文
阅读 1411 赞赏 0 有用 0 没用 0 收藏 0 分享

   



0 条留言

linux分享的头像

linux分享

每个软件都有确定的用途

相关文章

阿里云·业务运营团队内部的前端构建和工程化工具 Dawn开源

阿里云云盾扫描服务器的的IP段有哪些?

阿里云云盾扫描服务器的的IP段有哪些?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

我是如何执行 "rm -rf ~" 的

正态分布为什么常见?(财富的分布却不符合正态分布)

Linux下窗口管理器 xmonad 的使用教程

用披萨做比喻来解释 IaaS,PaaS,SaaS 的区别

如何制作CSR(证书私钥和证书请求文件)文件?

php RedisException with message read error on connection

Windows环境下ping丢包或不通时链路测试工具推荐

Linux下ping丢包或不通时链路测试工具推荐

链路测试结果分析说明及常见链路异常场景和测试报告

SSH 登录时出现如下错误:login: Module is unknown

手机扫一扫
分享文章