如何在JMESPath中对字符串开头进行正则式匹配(AWS EMR场景)
用JMESPath匹配EMR集群名称前缀的两种方案
方案1:用starts_with函数(简单直接)
直接把原来的精确匹配改成前缀检查,命令如下:
aws emr list-clusters --active --query 'Clusters[?starts_with(Name, `My-Cluster`)].Id' --output text
starts_with(Name, My-Cluster)会筛选出所有名称以My-Cluster开头的集群,不管后面跟什么后缀(比如你的My-Cluster-082022),完全满足需求。
方案2:用正则匹配(适合复杂规则)
如果需要对后缀格式做限制(比如必须是6位数字),可以用JMESPath的matches函数配合正则:
aws emr list-clusters --active --query 'Clusters[?Name.matches(`^My-Cluster-\\d{6}$`)].Id' --output text
这里的正则^My-Cluster-\\d{6}$含义是:
^:字符串必须从My-Cluster-开头\\d{6}:后面紧跟6位数字$:字符串到6位数字结束
注意:JMESPath里正则的反斜杠要转义成\\,不然会被CLI解析成特殊字符。
两种方法按需选择,前者简单高效,后者灵活可控。
内容的提问来源于stack exchange,提问作者RunThor
相关产品推荐
相关产品推荐

