使用grep计算匹配的总数而不是匹配的行数

Wil*_*iam 32 linux unix grep regex command-line

grep 是否提供了一种计算匹配总数的方法?-c 选项只返回匹配正则表达式的行数,但在这种情况下,我每行有多个匹配项。

小智 30

尝试这个:

grep -o -E "your expression" file |wc -l
Run Code Online (Sandbox Code Playgroud)

好吧,-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
Run Code Online (Sandbox Code Playgroud)


cho*_*own 8

有一个 -o 标志,表示只应打印该行的匹配子部分。

与 wc -l 结合使用:

grep -o "part of line" | wc -l
Run Code Online (Sandbox Code Playgroud)

man grep 也解释了它。