jrd*_*oko 90 search grep count match
在搜索文件中出现的字符串数时,我通常使用:
grep pattern file | wc -l
Run Code Online (Sandbox Code Playgroud)
但是,由于grep的工作方式,每行只能找到一个匹配项.如何搜索字符串在文件中出现的次数,无论它们是在相同还是不同的行上?
另外,如果我正在搜索正则表达式模式,而不是简单的字符串呢?我如何计算这些,或者甚至更好地在新线上打印每场比赛?
hud*_*jev 150
要计算所有事件,请使用-o.试试这个:
echo afoobarfoobar | grep -o foo | wc -l
Run Code Online (Sandbox Code Playgroud)
而man grep当然,(:
有人建议只使用grep -co foo而不是grep -o foo | wc -l.
别.
此快捷方式在所有情况下都不起作用.手册页说:
-c print a count of matching lines
Run Code Online (Sandbox Code Playgroud)
这些方法的不同之处如下所示:
1.
$ echo afoobarfoobar | grep -oc foo
1
Run Code Online (Sandbox Code Playgroud)
一旦在行(a{foo}barfoobar)中找到匹配,搜索就会停止.只检查了一行并匹配,因此输出为1.实际上-o这里被忽略了,你可以grep -c改用它.
2.
$ echo afoobarfoobar | grep -o foo
foo
foo
$ echo afoobarfoobar | grep -o foo | wc -l
2
Run Code Online (Sandbox Code Playgroud)
在line(a{foo}bar{foo}bar)中找到两个匹配项,因为我们明确要求查找每个匹配项(-o).每个出现的都打印在一个单独的行上,wc -l只计算输出中的行数.
| 归档时间: |
|
| 查看次数: |
127876 次 |
| 最近记录: |