String 用于打印具有特定列的行的awk格式

String 用于打印具有特定列的行的awk格式,string,awk,format,String,Awk,Format,我只想打印列中具有特定字符串的行,例如“fg” 第3列或第4列和第2列以fg开头 我正在使用下面的命令,但它也会打印第2列中没有fg作为起始字符的行 awk '{if (($3 == "fgfgfg" || $4 == "fgfgfg") && $2 ~ /fg/) print $0}' file_name 必须满足的条件是$2列必须以“fg”开头,我还想添加一个条件,即第2列以fg开头,后跟5位数字? 请帮忙 要确保第2列以fg开头,您需要使用: $2 ~ /^fg/ 请

我只想打印列中具有特定字符串的行,例如“fg” 第3列或第4列和第2列以fg开头 我正在使用下面的命令,但它也会打印第2列中没有fg作为起始字符的行

 awk '{if (($3 == "fgfgfg" || $4 == "fgfgfg") && $2 ~ /fg/) print $0}' file_name
必须满足的条件是$2列必须以“fg”开头,我还想添加一个条件,即第2列以fg开头,后跟5位数字?
请帮忙

要确保第2列以
fg
开头,您需要使用:

$2 ~ /^fg/
请注意
^
。这是锚链的起点。如果省略它,正则表达式将在字符串中的任何位置匹配
fg

顺便说一句,您可以简化命令:

awk '(($3 == "fgfgfg") || ($4 == "fgfgfg")) && $2 ~ /^fg/' file

在这个简单的例子中,如果您不想使用正则表达式,也可以使用
substr($2,1,2)=“fg”
。@hek2mgl谢谢您的回答,但我需要说第3列或第4列应该包含字符串“fg”。然后第2列必须以“fg”开头,然后在任何情况下(无论第3列还是第4列是否包含字符串)都必须加上5位数字。哦,我错过了。改变了答案
 awk '(($3 == "fgfgfg") || ($4 == "fgfgfg")) && ($2 ~ /^fg[0-9]{5}/)' file_name