terminal çıkışındaki hat sayısını say


265

SO üzerinde bulamadı. Terminalde şu komutu çalıştırdım:

>> grep -Rl "curl" ./

ve bu, anahtar kelime kıvrımının oluştuğu dosyaların listesini görüntüler. Dosya sayısını saymak istiyorum. Aklıma gelen ilk yol, çıkışta terminalde gelen hat sayısını saymak. Bunu nasıl yapabilirim?


40
grep kendisi de sahiptir -csadece sayımını döndüren bayrak
EaterOfCode

Yanıtlar:


476

Sonucu ( hat sayısı ) anahtarını wckullanarak bağlayın:-l

grep -Rl "curl" ./ | wc -l

1
Ben kullanıyorum grep "" -cama bu bazı çok daha güzel :) olduğunu
ninhenzo64

3
Wc'ye yapılan bu boru numarasının sadece grep çıkışı için değil, herhangi bir çıkış için çalışacağına dikkat edilmelidir. Örneğin, bir git farkıyla birleştirilebilir.
Jason L.

1
Bu neden kabul edilen cevap? Bazı yorumlarda belirtildiği gibi grep -c, çıkışı başka bir programa bağlamak yerine yerleşik işlev kullanılmalıdır. Örneğin, Word belgenizdeki karakterleri Word'den başka bir metin düzenleyicisiyle bile değiştirmezdiniz, değil mi?
Michael P

57

Bir cevap olarak EaterOfCode'un yorumunu buraya koyuyorum.

grep'in kendisi de sayıyı döndüren -c bayrağına sahiptir.

Böylece komut ve çıktı bu şekilde görünebilir.

$ grep -Rl "curl" ./ -c
24

DÜZENLE:

Her ne kadar bu cevap daha kısa olabilir ve bu nedenle kabul edilen cevaptan daha iyi görünebilir (bu da kullanılmaktadır wc). Artık buna katılmıyorum. Hatları boru ile sayabileceğinizi hatırlamak istiyorum wc -l, diğer programlarla da kullanabileceğinizden çok daha yararlıdır grep.


5

Son satır bir satırsonu ile bitiyorsa, 'wc' boruları daha iyi olabilir (bu durumda, biliyorum)
.

Örneğin:

$ echo "asd" | wc -l

Dönecek 1ve

$ echo -n "asd" | wc -l

Dönecek 0


Sık kullandığım şey grep <anything> -c

$ echo "asd" | grep "^.*$" -c
1

$ echo -n "asd" | grep "^.*$" -c
1

Bu gerçeğe wc -lgeri dönecek olandan daha yakındır .

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.