用grep计算匹配总数,而不是匹配多少行


29

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

Answers:


29

尝试这个:

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

8

有一个-o标志,指示仅应打印该行的匹配子节。

与wc -l结合使用:

grep -o "part of line" | wc -l

man grep也对此进行了解释。


1

作为其他答案的替代方法,仅使用grep即可:

grep -o "seach pattern" somefile.txt | grep -c ""

第一个grep中的-o输出每个匹配项,仅输出匹配项-不输出整行(当然,除非整行是匹配项)。然后,第二个grep中的-c计数为'em。

还可以输入几个字符(例如4或5),但我发现它更容易记住。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.