Подсчет общего количества совпадений с помощью grep вместо количества совпадений

29

Предлагает ли grep подсчитать общее количество совпадений? Опция -c возвращает только количество строк, соответствующих регулярному выражению, но в этом случае у меня есть несколько совпадений на строку.

Уильям
источник

Ответы:

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 ""

-O в первом grep выводит каждое совпадение, и только совпадение - не всю строку (конечно, если не вся строка соответствует совпадению). -C во втором grep подсчитывает их.

Это еще несколько символов для ввода (например, 4 или 5), но мне легче запомнить.

Самоочевидный
источник