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

Kar*_*hik 7 regex awk

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

fltr_desc_name
Run Code Online (Sandbox Code Playgroud)

那就是.."fltr"后跟一个下划线,后跟任意数字的下划线.

例如:我需要一个正则表达式来匹配以下内容:

fltr_desc_name
fltr_nameone_nametwo
fltr_level_name_desc
Run Code Online (Sandbox Code Playgroud)

我在"awk"中的"if"语句中使用它:对于ex:

awk '/Transformation/ { if ($4=="Filter" && $5=="fltr_*") print $4,$5 }' filename  
Run Code Online (Sandbox Code Playgroud)

请帮我编写正则表达式并告诉我如何在"awk"命令中的"if"条件内使用正则表达式.谢谢.

小智 19

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

if ($5 ~ /fltr_*/)
Run Code Online (Sandbox Code Playgroud)


Ed *_*ton 9

awk '/Transformation/ && $4=="Filter" && $5~/^fltr_[[:alpha:]_]+/ { print $4,$5 }' filename
Run Code Online (Sandbox Code Playgroud)


And*_*son 7

你可以用

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

无需使用if语句,您可以按照上述使用多个匹配条件.match返回该正则表达式的匹配位置^fltr_[A-Za-z_]+$5,或0,如果有没有.0的计算结果为false,其他任何内容都为true.

  • @Karthik比赛()是不必要的.你的主要问题只是你使用的是字符串比较运算符(==)而不是RE比较运算符(〜).我会发布真正的解决方案. (2认同)