我需要编写一个正则表达式来匹配以下模式:
fltr_desc_name
那是......
“fltr”后跟一个下划线,后跟任意数字用下划线分隔。
例如: 我需要一个正则表达式来匹配以下内容:
fltr_desc_name
fltr_nameone_nametwo
fltr_level_name_desc
我正在“awk”中的“if”语句中使用它: 例如:
awk '/Transformation/ { if ($4=="Filter" && $5=="fltr_*") print $4,$5 }' filename
请帮我编写正则表达式并告诉我如何在“awk”命令中的“if”条件中使用正则表达式。谢谢。
答案 0 :(得分:15)
在匹配awk中的正则表达式时需要使用波形符~/ /
,即
if ($5 ~ /fltr_*/)
答案 1 :(得分:8)
awk '/Transformation/ && $4=="Filter" && $5~/^fltr_[[:alpha:]_]+/ { print $4,$5 }' filename
答案 2 :(得分:7)
您可以使用
awk '/Transformation/ && $4=="Filter" && match($5, /^fltr_[A-Za-z_]+/) { print $4,$5 }' filename
无需使用if
语句,您可以按照上述使用多个匹配条件。 match
会在^fltr_[A-Za-z_]+
中返回正则表达式$5
的匹配位置,如果没有,则返回0。 0评估为false,其他任何内容为true。
答案 3 :(得分:1)
fltr_[a-zA-Z_]+[a-zA-Z]
或者如果您只想从字符串start到string end匹配:
^fltr_[a-zA-Z_]+[a-zA-Z]$
答案 4 :(得分:0)
你可以使用fltr_\w+
如果你需要一个很好的程序来编写和测试正则表达式。试试这个:http://gskinner.com/RegExr/
答案 5 :(得分:0)
试试这个
^fltr[_\d\w]+$
这需要一切,你需要。