如果匹配,我需要匹配一些模式我需要打印接下来的几个单词。我只有三个这样的条件要匹配……但我只需要打印满足第一个条件后出现的那些单词……iez。 .
虽然在 LLL SSS 之前我有 TTT ,但我只需要将 LLL SSS 之后的那些打印到 AAA RRR ,当我遇到 LLL SSS 需要做同样的事情时,我尝试声明一个 awk 标志变量,但它没有t 似乎工作。请帮助我。
var1="LLL";var2="SSS";var3="TTT";var4="AAA";var5="RRR";
awk -v flag=1 '{
for (m=1;m<=NF;m++)
if($m~m/'$var1'/ && $(m+1)~/'$var2'/)
print "ABCD: ", $(m+2),$(m+3),$(m+4)
{flag=0};
else {
if {flag==0 && $m~/'var3'/)
print "EFG : ", $(m+1);
else {
if (flag==0 && $m~/'$var4'/ && $(m+1)~/'var5'/)
print "HIJ: ",$(m+2),$(m+3)
{flag=1};
}
}
}
}' fliename
我的文件是这样的:
AAA RRR H I
DDDD OOO HI J UGC RR
TTT YYY
LLLLL IIIIII
LLL SSS A B C D
N
DDDD TTT EFG
BBB AAA RRR J K
HHHHHH RRRRRR
LLL SSS E H G H
N
DDDD TTT EFG
UUUUU BBB AAA RRR J K