wc komutu: Satır ve kelime sayma, wc -l ile pipe kullanımı

Test ortamıRHEL ailesiAlmaLinux 9.8root hesabı2026-10-29 tarihinde kontrol edildi

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/work
wc access.log
 10 100 766 access.log

Eriş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.log
10 access.log
wc -w access.log
100 access.log
wc -c access.log
766 access.log

Var olmayan bir dosya verirseniz bir hata iletisi çıkar ve çıkış kodu 1 olur.

wc nosuch.txt
wc: nosuch.txt: No such file or directory
echo $?
1

2️⃣ 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.log
10
cat access.log | wc -l
10

Pipe'ı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 -l
3

Kaç 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 -u
192.0.2.10
192.0.2.44
198.51.100.7
203.0.113.25
cut -d ' ' -f 1 access.log | sort -u | wc -l
4

wc -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.txt
first line
last line
wc -l no-newline.txt
1 no-newline.txt

Satı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
아메리카노
카페 라테 ☕
tea
wc -c menu.txt
38 menu.txt
wc -m menu.txt
18 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.log
82 access.log
wc -L menu.txt
12 menu.txt

Aksanlı 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.txt
café
wc -c cafe.txt
6 cafe.txt
wc -m cafe.txt
5 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şKomutBu yazıdaki ölçüm
Yalnızca satır sayısını sayı olarak almakwc -l < access.log10Dosya adı olmadan yalnızca sayı
Bir koşula uyan satırları saymakgrep ‘ 404 ‘ access.log | wc -l3404 yanıtlı satırlar
Farklı değerleri saymakcut -d ‘ ‘ -f 1 access.log | sort -u | wc -l4Farklı IP sayısı
Dosya boyutunu kontrol etmekwc -c access.log766Bayt sayısı
Korece içeren bir dosyanın karakter sayısıwc -m menu.txt18Aynı dosya -c ile sayılırsa 38
En uzun satırın ekran genişliğiwc -L access.log82Menü dosyası her Korece karakteri iki sütun saydığı için 12
Birden çok dosyanın toplam satır sayısıwc -l *.log13total 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 total

Aynı 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 total

Farklı 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.

wc komutu simülatörüwc / root hesabı
[root@server work]#
Klavyedeki ↑↓ tuşlarıyla daha önce yazdığınız komutları geri çağırabilirsiniz.

🔢 SSS & önerilen içerikler

Tek bir dosyada bir koşula uyan satırları sayarken evet. Aynı erişim günlüğünde aynı koşulla grep -c de 3 verdi. grep -c işi pipe olmadan tek komutla bitirir; wc -l ise grep dışında sort veya cut gibi başka komutların çıktısını saymak için kullanılır.

Boşluk, sekme veya satır sonuyla ayrılan her parçayı bir kelime olarak sayar. [echo ‘log_level=warn timeout = 30’ | wc -w] komutunun sonucu 4'tür. Boşluksuz yazılmış log_level=warn bir kelime, iki yanında boşluk olan = ise ayrı bir kelime olarak sayıldı.

find ile yalnızca dosyaları seçip wc -l'ye aktarın. Örnek klasörde [find /root/work -type f | wc -l] 5 yazdırdı. [ls | wc -l] de aynı klasörde 5 verdi, ancak ls alt klasör adlarını da birer satır olarak çıkarır ve onların içindeki dosyaları saymaz.

ℹ️ 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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 0   +   10   =