Zliczanie całkowitej liczby dopasowań grep zamiast liczby pasujących wierszy


29

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ę.

Odpowiedzi:


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

8

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.


1

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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.