search – 计算文件中模式的出现次数(即使在同一行上)

当在文件中搜索字符串的出现次数时,我通常使用:

grep pattern file | wc -l

然而,这只发现每行一个,因为grep的工作方式。如何搜索字符串在文件中出现的次数,无论它们是在相同或不同的行上?

此外,如果我正在搜索一个正则表达式模式,而不是一个简单的字符串?我如何计数这些,或者更好,打印每一场比赛在一个新的行?

要计算所有出现次数,请使用-o。尝试这个:

echo afoobarfoobar | grep -o foo | wc -l

和男人grep当然(:

更新

一些建议只使用grep -co foo而不是grep -o foo | wc -l。

别。

此快捷方式在所有情况下都不起作用。手册页说:

-c print a count of matching lines

这些方法的差异如下所示:

1。

$ echo afoobarfoobar | grep -oc foo
1

一旦在线({foo} barfoobar)中找到匹配,搜索停止。只检查了一行并且它匹配,所以输出是1.实际上-o在这里被忽略,你可以只使用grep -c。

2。

$ echo afoobarfoobar | grep -o foo
foo
foo

$ echo afoobarfoobar | grep -o foo | wc -l
2

在行({foo} bar {foo} bar)中找到两个匹配项,因为我们明确要求查找每个匹配项(-o)。每次出现都打印在单独的行上,wc -l只计算输出中的行数。

http://stackoverflow.com/questions/2908757/count-number-of-occurrences-of-a-pattern-in-a-file-even-on-same-line

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:search – 计算文件中模式的出现次数(即使在同一行上)