wc komutu: Satır ve kelime sayma, wc -l ile pipe kullanımı
wc komutu, bir dosyadaki satır, kelime ve bayt sayısını sayıp yazdıran bir Linux komutudur. Bir web sunucusunun örnek erişim günlüğü dosyasındaki satırları wc -l ile saydığınızda 10 çıkar; grep ile yalnızca 404 yanıtlarını süzüp wc -l'ye aktardığınızda başarısız istek sayısı olan 3'ü tek bir sayı olarak görebilirsiniz.
Aşağıdaki günlükler, dosya içerikleri ve /root/work çalışma klasörü örnek değerlerdir. Günlük, belgelendirme için ayrılmış IP adresleriyle hazırlanmış on satırlık bir dosyadır ve diğer dosyaların hepsi de test için oluşturulmuştur.
1️⃣ wc komutunun temel kullanımı ve çıktısını okuma
Komutun temel biçimi wc, seçenekler ve dosyalar sırasıdır. Seçenek vermeden yalnızca dosya verirseniz satır, kelime ve bayt sayısını sırayla yazdırır ve en sona dosya adını ekler.
cd /root/workwc access.log 10 100 766 access.logErişim günlüğünü saymanın sonucunda 10 satır sayısı, 100 kelime sayısı, 766 bayt sayısıdır.
Yalnızca tek bir sayı görmek için -l, -w veya -c seçeneklerinden birini ekleyin.
wc -l access.log10 access.logwc -w access.log100 access.logwc -c access.log766 access.logVar olmayan bir dosya verirseniz bir hata iletisi çıkar ve çıkış kodu 1 olur.
wc nosuch.txtwc: nosuch.txt: No such file or directoryecho $?12️⃣ wc -l ile satır sayma ve pipe
Satır sayısıyla birlikte dosya adı da yazdırılırsa, bu sayıyı bir betik değişkenine atarken adı bir kez daha kesip atmanız gerekir. Dosyayı yönlendirme (<) veya pipe ile aktarırsanız wc dosya adını bilmediği için yalnızca sayıyı yazdırır.
wc -l < access.log10cat access.log | wc -l10Pipe'ın önüne grep koyarsanız yalnızca bir koşula uyan satırları sayabilirsiniz. Arama, 404 yanıt kodunun önündeki ve arkasındaki boşluklar da dahil edilerek yapıldı ve 404 içeren üç satır vardı.
grep ' 404 ' access.log | wc -l3Kaç farklı IP'nin bağlandığını saymak için yalnızca ilk alanı kesip alın, sort -u ile yinelenen satırları silin ve sonra sayın. On satırlık günlükte dört farklı IP vardı.
cut -d ' ' -f 1 access.log | sort -u192.0.2.10
192.0.2.44
198.51.100.7
203.0.113.25cut -d ' ' -f 1 access.log | sort -u | wc -l4wc -l, satır sonu karakterlerinin sayısını sayar. Bu yüzden son satırın sonunda satır sonu olmayan bir dosyada cat iki satır gösterse de wc -l 1 yazdırır.
cat no-newline.txtfirst line
last linewc -l no-newline.txt1 no-newline.txtSatır sayısı bir eksik çıkarsa önce son satırın satır sonuyla bitip bitmediğini kontrol edin.
3️⃣ wc seçenekleri ve -c, -m ile karakter sayısı
UTF-8'de İngilizce harfler ve rakamlar karakter başına 1 bayt, Korece karakterler (Hangul) ve ☕ ise her biri 3 bayt yer kaplar. Bu yüzden yalnızca İngilizce metin içeren bir dosyada -c ile sayılan bayt sayısı ile -m ile sayılan karakter sayısı aynıdır, ancak Korece girdiğinde iki sayı farklılaşır. Karşılaştırmada iki satır Korece menü adı ve bir satır İngilizce içeren bir dosya kullanıldı.
cat menu.txt아메리카노
카페 라테 ☕
teawc -c menu.txt38 menu.txtwc -m menu.txt18 menu.txt-c 38, -m 18 verdi; fark 20'dir. Bu fark, dokuz Korece karakterin ve ☕'nin her birinin kapladığı fazladan 2 bayttan gelir; bu yüzden Korece içeren bir dosyada gerçek karakter sayısını bulmak için -m ile saymanız gerekir. Ölçüm C.UTF-8 yerel ayarında yapıldı ve kılavuza göre -m, yerel ayarın karakter birimleriyle sayar.
-L, en uzun satırın ekran genişliğini yazdırır. Erişim günlüğünde en uzun satır 82 sütundu; menü dosyasında her Korece karakter ve ☕ iki sütun kapladığı için 7 karakterlik bir satır 12 çıktı.
wc -L access.log82 access.logwc -L menu.txt12 menu.txtAksanlı Latin harfleri UTF-8'de karakter başına 2 bayt yer kaplar. Bu, yalnızca café satırını içeren bir dosyayla ayrıca ölçüldü.
cat cafe.txtcaféwc -c cafe.txt6 cafe.txtwc -m cafe.txt5 cafe.txt-c 6, -m 5 verdi; tek é bir bayt fazla yer kapladı. İngilizce harfler ve rakamlar 1 bayt, é gibi aksanlı harfler 2 bayt, Korece karakterler ve ☕ 3 bayt olduğu için aynı karakter sayısında bile bayt sayısı farklılaşır.
Tabloda her iş için uygun komut ve bu yazıda sayılan sayı bir arada verilmiştir.
| Yapılacak iş | Komut | Bu yazıdaki ölçüm |
|---|---|---|
| Yalnızca satır sayısını sayı olarak almak | wc -l < access.log | 10Dosya adı olmadan yalnızca sayı |
| Bir koşula uyan satırları saymak | grep ‘ 404 ‘ access.log | wc -l | 3404 yanıtlı satırlar |
| Farklı değerleri saymak | cut -d ‘ ‘ -f 1 access.log | sort -u | wc -l | 4Farklı IP sayısı |
| Dosya boyutunu kontrol etmek | wc -c access.log | 766Bayt sayısı |
| Korece içeren bir dosyanın karakter sayısı | wc -m menu.txt | 18Aynı dosya -c ile sayılırsa 38 |
| En uzun satırın ekran genişliği | wc -L access.log | 82Menü dosyası her Korece karakteri iki sütun saydığı için 12 |
| Birden çok dosyanın toplam satır sayısı | wc -l *.log | 13total satırında toplam |
4️⃣ Linux wc ile birden çok dosyanın toplamı
Birden çok dosya verirseniz wc her dosya için bir satır yazdırır ve son satıra total olarak toplamı ekler. Erişim günlüğü ile hata günlüğünü birlikte saydığınızda total satırındaki 13 iki dosyanın satır sayılarının toplamıdır.
wc access.log error.log 10 100 766 access.log
3 11 76 error.log
13 111 842 totalAynı uzantılı günlükleri tek seferde saymak için joker karakter kullanın. Kabuk *.log ifadesini dosya adlarına çevirip aktardığı için sonuç, her dosya adını tek tek yazmakla aynıdır.
wc -l *.log 10 access.log
3 error.log
13 totalFarklı uzantılı dosyalar da adlarını art arda yazarsanız tek seferde sayılır. İki günlük ile menü dosyası birlikte sayıldığında sonuç total 16 oldu.
wc -l access.log error.log menu.txt 10 access.log
3 error.log
3 menu.txt
16 total🔲 wc komutu simülatörü
Aşağıdaki simülatörde yazıdaki örnek dosyalarla wc komutunu kendiniz yazabilirsiniz. Çiplerle -l, -m ve pipe ile saymayı deneyebilir, access.log'a bir satır ekleyip yeniden saydığınızda artan sayıyı görebilirsiniz.
🔢 SSS & önerilen içerikler
Linux · Metin
Linux sort komutu: Dosya sıralama
Dosya içeriğini alfabetik ya da artan veya azalan sırada sıralayan sort seçenekleri ve kullanım örnekleri.
Linux · Metin
Linux uniq komutu
Yinelenen satırlardan yalnızca birini bırakan ve -c ile kaç kez tekrarlandığını sayan uniq'in kullanımı.
Linux · Metin
Linux head komutu ve tail komutu
Bir dosyanın ilk 10 satırını yazdıran head ile son 10 satırını yazdıran tail'in seçenekleri ve kullanımı.
ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.