如果匹配,我需要匹配某些图案我需要打印接下来的几个单词..我只有三个这样的条件匹配......但我需要只打印满足第一个条件后出现的单词.. iez ..awk:匹配特定图案后的图案和图案旁边的打印字
虽然在LLL SSS之前我有TTT,但我只需要打印LLL SSS到AAA RRR之后的那些,而当我遇到LLL SSS需要做同样的事情,我试过声明一个awk标志变量,但它似乎不起作用。请帮助我。
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
什么是你期望的输出? –
拥有一个名为'flag'的标志就像拥有一个孩子并命名为'kid'。来吧...还有如何缩进? –
Andalso,你的代码语法没有多大意义。即使编辑也很难。 – Rubens