- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 AWS 命令行界面 (CLI) 列出一些来自 AWS 的 AMI 镜像。图像的名称是这样的:
XY_XYZ_Docker_1.13_XYZ_XXYY
使用时
aws ec2 describe-images --filters 'Name=name,Values="*_Docker_1.13_*"'
它按预期工作。
现在我想使用正则表达式而不是名称过滤器的静态值。在 AWS-Docs 中,我读到通过 RegEx 过滤 is possible我的做法是:
1:
aws ec2 describe-images --filters 'Name=name,Values="[_]Docker[_][0-9][.][0-9]{2}[_]"'
为此,结果总是null。我尝试了不同的方式来引用 RegEx。
2:
[_]Docker[_][0-9][.][0-9]{2}[_]
(不带引号)导致
Error parsing parameter '--filters': Expected: ',', received: 'D' for input: Name=name,Values=[]Docker[][0-9][.][0-9]{2}[_]
3:
*[_]Docker[_][0-9][.][0-9]{2}[_]*
(带星号)导致
Error parsing parameter '--filters': Expected: ',', received: ']' for input: Name=name,Values=[_]Docker[_][0-9][.][0-9]{2}[_]
最佳答案
我无法找到 Jmespath 或 --filters 标志是否可以支持正则表达式,所以我只是通过管道传输到 Python 以通过正则表达式运行。
aws ec2 describe-images --filters 'Name=name,Values="*Docker*"' | \
python -c '
import json, sys, re
obj = json.load(sys.stdin)
matched_images = {"Images":[]}
for image in obj["Images"]:
if len(re.findall(r"[Dd]ocker\s?[0-9][.][0-9]{2}", image["Name"])) > 0:
matched_images["Images"].append(image)
print json.dumps(matched_images)
'
如果需要,您可以将输出(只是一个 JSON 字符串)通过管道传输到下一个 bash 命令,并在结束引号后加上管道字符。也许这可以解决使用 grep 的问题,因为它会返回 JSON 字符串而不是常规文本。
关于amazon-web-services - 如何在 AWS CLI 过滤器中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53302912/
我是一名优秀的程序员,十分优秀!