Підрахунок загальної кількості матчів із грепом, а не скільки рядків


29

Чи пропонує греп спосіб підрахувати загальну кількість матчів? Опція -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 у другому грепі рахує їх.

Набрати ще кілька символів (наприклад, 4 або 5), але мені легше запам’ятати.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.