我想在每个“标题”之后计算“文本”的实例。我正在使用 grep 和 awk,但对任何工具都持开放态度。我的文件如下所示:
header1
text1
text2
text3
header2
text1
header3
header4
text1
text2
...
一个好的输出看起来像这样
header1 3
header2 2
header3 0
header4 2
...
我的问题类似于this , 但不需要计算总出现次数,而是计算某个字符串之间的出现次数。
最佳答案
此 awk 命令不会将整个文件存储在内存中:
awk '/^header/{if (head) print head,k;head=$1; k=0}!/^header/{k++}END{print head,k}' file
如果您只对计算包含 text
的行数感兴趣,则将脚本更改为:
awk '/^header/{if (head) print head,k;head=$1; k=0}/text/{k++}END{print head,k}' file
关于bash - grep 找到字符串后计算行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18228884/