我有多个文件,我在两个分隔符之间提取文本(START和END不包括在内)。在我处理每个文件后,我想输出一个分隔符,指示文件已处理,比如字符串“END”。在每个处理过的文件后,如何将字符串“END”添加到输出中?例如,
假设我有两个内容
的文件line 1
line 2
START
I want to extract this text
and this text
END
line 3
line 4
和
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”添加到输出中?
答案 0 :(得分:1)
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
答案 1 :(得分:0)
每个新文件上的变量FNR都会重置为0,因此您可以启用规则触发器(FNR == 0&& NR!= 0):
(FNR==0) && (NR!=0) {
print "END"
}
END {
print "END"
}
答案 2 :(得分:0)
你要求awk跳过打印END。停止。
awk '/START/,/END/{if (!/START/) print}' test*.txt