Conteggio del numero totale di partite con grep anziché solo quante righe corrispondono


28

Grep offre un modo per contare il numero totale di partite che fa? L'opzione -c restituisce solo il numero di righe corrispondenti alla regex, ma in questo caso ho più corrispondenze per riga.

Risposte:


28

prova questo:

grep -o -E "your expression" file |wc -l

bene, -E è solo un esempio, potrebbe essere -P, -F ecc. il punto è -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

È presente un flag -o che indica che deve essere stampata solo la sottosezione corrispondente della riga.

Usalo insieme a wc -l:

grep -o "part of line" | wc -l

man grep lo spiega anche.


1

In alternativa alle altre risposte, usando solo grep:

grep -o "seach pattern" somefile.txt | grep -c ""

Il -o nel primo grep mostra ogni partita, e solo la partita - non l'intera linea (a meno che l'intera linea NON sia la partita, ovviamente). -C nel secondo grep quindi conta.

Ci sono alcuni altri caratteri da scrivere (come, 4 o 5), ma trovo più facile da ricordare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.