计算与模式匹配的行之后的行数

计算与模式匹配的行之后的行数

如何计算模式之间的行数并重定向文件上的行数?

例子:

PATTERN FOUND 
rows 
rows 
rows 
PATTERN FOUND 
rows 
rows

预期结果应该是:

3
2

答案1

使用awk

$ awk -v RS='PATTERN FOUND' 'NF{print NF}' infile
3
2

或者,如果您rows实际上是一组句子,您可以这样做:

$ awk -v RS='PATTERN FOUND' -F'\n' 'NF{print NF-2}' infile >output

上面awk是下面的示例输入文件:

PATTERN FOUND
rows
rows
rows
PATTERN FOUND
rows
rows
Here PATTERN FOUND :
zero first
second

fourth fifth sixth and last

会给你结果:

3
2
4

要摆脱空行并且不计算它们:

awk -v RS='PATTERN FOUND' -F'(\n)+' 'NF{print NF-2}' infile

并删除空行和那些仅包含空格(制表符或空格)的行:

awk -v RS='PATTERN FOUND' -F'(\n|^[ \t]*$)+' 'NF{print NF-2}' infile

相关内容