如何计算模式之间的行数并重定向文件上的行数?
例子:
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