在awk中处理每个文件后添加分隔符

我有多个文件,我在两个分隔符之间提取文本(START和END非包含)。在我处理每个文件后,我想输出一个分隔符,指示文件已处理,比如字符串“END”。在每个处理过的文件后,如何将字符串“END”添加到输出中?例如, 假设我有两个包含内容的文件 FILE1.TXT
line 1
line 2
START
I want to extract this text
and this text
END
line 3
line 4
和 FILE2.TXT
line10
line20
START
I also want this text.
END
line 30
我知道如果执行以下操作:
awk '/START/,/END/{if (!/START/&&!/END/) print}' test*.txt
我将得到以下输出:
I want to extract this text
and this text
I also want this text.
但我想要的输出是:
I want to extract this text
and this text
END
I also want this text.
END
在处理完每个文件后,如何将字符串“END”添加到输出中?     
已邀请:
FNR==1 && NR!=1 {print "END"}
END {print "END"}
所以你有:
awk 'FNR==1 && NR!=1 {print "END"} /START/,/END/{if (!/START/&&!/END/) print} END {print "END"}' test*.txt
    
变量FNR在每个新文件上重置为0,因此您可以启用规则触发器(FNR == 0&& NR!= 0):
(FNR==0) && (NR!=0) {
  print "END"
}
END {
  print "END"
}
    
你要求awk跳过打印END。不要那么做。
awk '/START/,/END/{if (!/START/) print}' test*.txt
    

要回复问题请先登录注册