grep 是否提供了一种方法来计算它所匹配的总数? -c 选项仅返回与正则表达式匹配的行数,但在本例中,每行有多个匹配项。
答案1
尝试这个:
grep -o -E "your expression" file |wc -l
嗯,-E 只是一个例子,它可以是 -P,-F 等等。重点是 -o
测试:
kent$ echo "abc xxx yyy"|grep -cP "[a-z]{3}"
1
kent$ echo "abc xxx yyy"|grep -oP "[a-z]{3}"|wc -l
3
答案2
答案3
作为其他答案的替代,只使用 grep:
grep -o "seach pattern" somefile.txt | grep -c ""
第一个 grep 中的 -o 输出每个匹配项,并且仅输出匹配项 - 而不是整行(当然,除非整行就是匹配项)。然后第二个 grep 中的 -c 会计算它们。
需要输入的字符比较多(例如 4 或 5 个),但我发现这样更容易记住。