JMESPATH 使用小结
来源:互联网 发布:telnet 指定源端口 编辑:程序博客网 时间:2024/06/09 09:12
JMESPath 使用小结
使用AWS CLI时,为了使输出更直观,我们可以选择table显示方式。除此之外,我们还会遇到一个选项 –query,很多人都忽略了这个选项,其实它还是非常有用的,它可以让命令输出结果按照你的想法呈现出来,而不是夹杂一大堆无用的信息让你自己去辨认。举个很简单的例子,在查找AMI的时候,如果你只想看到AMI的Name和ImageId而忽略其他无关信息,你可以这样写:
aws ec2 describe-images --query 'Images[*].{Name:Name, ImageId:ImageId}'
它的输出会很简单明了:
[ { "Name": "pv-grub-hd0_1.04-i386.gz", "ImageId": "aki-908f1da9" }, { "Name": "pv-grub2-hd0_2.02-1.b2-x86_64.xz", "ImageId": "aki-9c4ad8a5" }]
这是什么原理呢?其实并没有什么高深的东西,–query只是使用了JMESPATH对命令行返回的JSON输出进行了解析提取而已。下面,我将对JMESPATH的使用进行一个简单的总结。语法比较简单,这里主要以常见表达式及相应的示例进行说明。
identifier
- key
e.g.
解析 {"key": "value"} key -> value
slice
- [start:end:step]
- [:index], [index:], [::-1]
e.g.
解析 [e0, e1, e2, e3, e4, e5, e6] [1:4:2] -> [e1, e3] [:3] -> [e0,e1,e2] [4:] -> [e4,e5,e6] [::-1] -> [e6,e5,e4,e3,e2,e1,e0]
projection
- list projection for all
[*].
- list projection for slice
[start:end:step].
- object projection
.*.
e.g.
解析 {"Images": [ {"ImageId": "xxxxx1", "Name": "yyyyy1"}, {"ImageId": "xxxxx2", "Name": "yyyyy2"} ] } Images[*].ImageId -> [xxxxx1, xxxxx2] Images[0:1:1].Name -> [yyyyy1] Images[].* -> [[xxxxx1,yyyyy1],[xxxxx2,yyyyy2]]
flat projection
[]
e.g.
解析 [1,[2,[3,4]],5,[6,7]] [] -> [1,2,[3,4],5,6,7] [][] -> [1,2,3,4,5,6,7]
filter
[?condition]
e.g.
解析 {"Volumes": [ { "Name": "v1", "Size": 100 }, { "Name": "v2", "Size": 500 } ] } Volumes[?Size>`200`].Name -> ["v2"]
multi-select list
.[key1,key2]
e.g.
解析 { "Images": [ {"Name": "ami1", "Size": 100, "Type": "t1"}, {"Name": "ami2", "Size": 200, "Type": "t2"} ] } Images[*].[Name, Size] -> [["ami1", 100], ["ami2", 200]]
multi-select hash
.{Key1:Key1, Key2:Key2}
e.g.
解析 6 中json串 Images[*].{Name:Name} -> [{"Name": "ami1"}, {"Name": "ami2"}]
function
contains(str, substr)
- …
e.g.
解析 6 中json串 Images[?contains(Name, `ami`)].Type -> ["t1", "t2"]
PIPE
- |
e.g.
解析 6 中json串 Images[*].[Name, Size] | [1] -> ["ami2", 200]
常用
ec2 describe-instances --query 'Reservations[].Instances[?KeyName==`mykey`][]|[?State.Name==`running`].[InstanceId, Tags[?Key==`N
ame`].Value|[0]]'aws ec2 describe-instances --query 'Reservations[].Instances[].{InstanceId: InstanceId, Key: Tags[?Key==`Name`]}[]|[?Key[?contains(Value,`test`)]].InstanceId'
0 0
- JMESPATH 使用小结
- [小结]svn基本使用小结
- DataGrid分页使用小结
- Ant使用小结
- treeview的使用小结
- TChart使用经验小结
- treeview的使用小结
- UrlReWriter 使用经验小结
- DataGrid分页使用小结
- ThradLocal使用小结
- Hibernate使用小结
- Comparator使用小结
- HashMap 使用小结
- listView使用小结
- 三层架构使用小结
- Typedef 使用小结
- .net使用小结
- Typedef 使用小结
- ReactJS material-ui 使用的css in js理念
- 让网页选择的文本背景变成红色.
- CC2541蓝牙串口乱码解决
- xUtils封装http各种操作
- 浅析C++ 中拷贝构造函数 与赋值构造函数
- JMESPATH 使用小结
- oracle查看隐藏参数
- MySQL存储引擎
- linux nfs 配置过程遇到的问题
- [嵌入式学习资料]ARM嵌入式开发学习详解4412开发板使用手册-600余页资料
- android sparseArray源码解析
- 使用JNIEnv全局变量调用FindClass()等函数发生crash
- csdn(感谢csdn提供这么好的交流平台)
- 用Eclipse 开发Dynamic Web Project应用程序