Получить общее количество совпадений для регулярного выражения с помощью стандартной команды Unix - PullRequest
1 голос
/ 04 августа 2010

Допустим, я хочу посчитать количество символов "o" в тексте

oooasdfa
oasoasgo

Моей первой мыслью было сделать grep -c o, но это возвращает 2, потому что grep возвращает количество совпадающих строк, а не общее количество совпадений. Есть ли флаг, который я могу использовать с grep, чтобы изменить это? Или, может быть, я должен использовать awk или какую-то другую команду?

Ответы [ 2 ]

5 голосов
/ 04 августа 2010

Будет напечатано количество совпадений:

echo "oooasdfa
oasoasgo" | grep -o o | wc -l
0 голосов
/ 04 августа 2010

вы можете использовать оболочку (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
...