Menghitung jumlah total kecocokan dengan grep, bukan hanya berapa banyak baris yang cocok

29

Apakah grep menawarkan cara untuk menghitung jumlah total pertandingan yang dibuatnya? Opsi -c hanya mengembalikan jumlah baris yang cocok dengan regex, tetapi dalam hal ini saya memiliki beberapa kecocokan per baris.

William
sumber

Jawaban:

29

coba ini:

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

baik, -E hanyalah sebuah contoh, bisa jadi -P, -F dll. Titik -o

uji:

kent$  echo "abc xxx yyy"|grep -cP "[a-z]{3}"      
1

kent$  echo "abc xxx yyy"|grep -oP "[a-z]{3}"|wc -l
3
Kent
sumber
8

Ada tanda -o yang menunjukkan bahwa hanya subbagian yang cocok dari baris yang harus dicetak.

Gunakan itu bersamaan dengan wc -l:

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

man grep menjelaskannya juga.

dikunyah
sumber
1

Sebagai alternatif dari jawaban lain, gunakan hanya grep:

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

-O dalam grep pertama menghasilkan setiap pertandingan, dan hanya pertandingan - bukan seluruh baris (kecuali seluruh baris ADALAH pertandingan, tentu saja). -C pada grep kedua lalu menghitungnya.

Ada beberapa karakter yang perlu diketik (seperti, 4 atau 5), tetapi saya merasa lebih mudah diingat.

Cukup jelas
sumber