通过标准unix命令获取正则表达式的匹配总数

时间:2010-08-04 13:42:30

标签: regex command-line grep

假设我想计算文本中“o”字符的数量

oooasdfa
oasoasgo

我的第一个想法是grep -c o,但这会返回2,因为grep会返回匹配行的数量,而不是匹配的总数。我可以使用grep来改变这个标志吗?或许我应该使用awk或其他命令?

2 个答案:

答案 0 :(得分:5)

这将打印匹配数:

echo "oooasdfa
oasoasgo" | grep -o o | wc -l

答案 1 :(得分:0)

你可以使用shell(bash)

$ var=$(<file)
$ echo $var
oooasdfa oasoasgo
$ o="${var//[^o]/}"
$ echo ${#o}
6

AWK

$ awk '{m=gsub("o","");sum+=m}END{print sum}' file
6