Czy grep oferuje sposób na policzenie całkowitej liczby dopasowań, które wykonuje? Opcja -c zwraca tylko liczbę wierszy pasujących do wyrażenia regularnego, ale w tym przypadku mam wiele dopasowań na linię.
29
Spróbuj tego:
grep -o -E "your expression" file |wc -l
Cóż, -E to tylko przykład, może to być -P, -F itd. Punkt to -o
test:
kent$ echo "abc xxx yyy"|grep -cP "[a-z]{3}"
1
kent$ echo "abc xxx yyy"|grep -oP "[a-z]{3}"|wc -l
3
Istnieje flaga -o, która wskazuje, że powinien zostać wydrukowany tylko dopasowany podsekcja linii.
Użyj tego w połączeniu z wc -l:
grep -o "part of line" | wc -l
man grep również to wyjaśnia.
Alternatywą dla innych odpowiedzi jest użycie grep:
grep -o "seach pattern" somefile.txt | grep -c ""
-O w pierwszym grepie wypisuje każde dopasowanie i tylko dopasowanie - nie całą linię (chyba, że cała linia JEST dopasowaniem, oczywiście). -C w drugim grep następnie je zlicza.
Jest jeszcze kilka znaków do wpisania (np. 4 lub 5), ale łatwiej mi zapamiętać.