8

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

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

4

6 回答 6

23

需要~/ /在awk中匹配正则表达式时使用波浪号,即

if ($5 ~ /fltr_*/)
于 2015-12-15T18:51:10.697 回答
8
awk '/Transformation/ && $4=="Filter" && $5~/^fltr_[[:alpha:]_]+/ { print $4,$5 }' filename
于 2013-01-08T13:46:26.447 回答
7

你可以使用

awk '/Transformation/ && $4=="Filter" && match($5, /^fltr_[A-Za-z_]+/) { print $4,$5 }' filename

无需使用if语句,您可以按照上述使用多个匹配条件。返回 中的正则表达式的match匹配位置,如果没有,则返回 0。0 评估为假,其他任何事情为真。^fltr_[A-Za-z_]+$5

于 2013-01-08T10:46:30.497 回答
1

fltr_[a-zA-Z_]+[a-zA-Z]

或者如果您只想从字符串开始匹配到字符串结尾:

^fltr_[a-zA-Z_]+[a-zA-Z]$

于 2013-01-08T10:38:38.433 回答
0

你可以用fltr_\w+

如果您需要一个好的程序来编写和测试正则表达式。试试这个: http: //gskinner.com/RegExr/

于 2013-01-08T10:39:32.483 回答
0

尝试这个

^fltr[_\d\w]+$

这将采取一切,你需要。

于 2013-01-08T10:43:23.947 回答