正则表达式匹配awk命令中的模式

时间:2013-01-08 10:33:16

标签: regex awk

我需要编写一个正则表达式来匹配以下模式:

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”条件中使用正则表达式。谢谢。

6 个答案:

答案 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]+$

这需要一切,你需要。