Kaç satırın eşleştiği yerine toplam eşleşmenin grep ile sayılması


29

Grep, yaptığı toplam eşleşme sayısını saymanın bir yolunu sunuyor mu? -C seçeneği yalnızca regex ile eşleşen satır sayısını döndürür, ancak bu durumda satır başına birden çok eşleşmeye sahibim.

Yanıtlar:


29

bunu dene:

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

Eh, -E sadece bir örnek, -P, -F vs. olabilir.

Ölçek:

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

Yalnızca çizginin eşleşen alt bölümünün basılması gerektiğini belirten bir -o bayrağı vardır.

Bunu wc -l ile birlikte kullanın:

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

man grep de bunu açıklar.


1

Diğer cevaplara alternatif olarak, sadece grep kullanarak:

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

İlk sıranın içindeki -o, her bir eşleşmeyi ve sadece eşleşmeyi çıktılar - tüm çizgi değil (tüm çizgi eşleşme değilse tabii ki). İkinci izlemedeki -c sonra onları sayar.

Yazılması gereken birkaç karakter daha (4 veya 5 gibi), ancak hatırlanması daha kolay.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.