1. awk Komutu Nedir?
awk, Linux ve Unix sistemlerinde metin dosyalarını işlemek, satırları/parçaları filtrelemek, raporlamak ve veri analizi yapmak için kullanılan güçlü bir araçtır.
Adını geliştiricileri olan Aho, Weinberger ve Kernighan’ın soyadlarının baş harflerinden alır.
Başlıca kullanım alanları:
- Metin dosyalarında sütun bazlı işlem yapmak
- Log dosyalarını analiz etmek
- CSV ve benzeri formatlı verilerden rapor üretmek
- Matematiksel hesaplamalar ve filtreleme yapmak
2. Temel Kullanım
awk 'koşul {eylem}' dosya
Örneğin:
awk '{print $1}' dosya.txt
Açıklama: Dosyanın ilk sütununu ekrana yazdırır.
3. Önemli Argümanlar ve Parametreler
Parametre | Açıklama |
---|---|
-F | Sütun ayırıcıyı belirtir (varsayılan: boşluk) |
-f dosya | Komutları dışarıdan bir awk betiğinden çalıştırır |
-v var=değer | Değişken ataması yapar |
NR | Satır numarasını tutar |
NF | Satırdaki sütun (field) sayısını tutar |
$0 | Satırın tamamını temsil eder |
$1, $2, … | Belirli sütunları temsil eder |
4. Temel Örnekler
4.1. Belirli Bir Sütunu Yazdırma
awk '{print $2}' dosya.txt
İkinci sütunu ekrana yazar.
4.2. Ayırıcı Belirleme
awk -F, '{print $1, $3}' data.csv
Virgülle ayrılmış bir dosyada ilk ve üçüncü sütunu gösterir.
4.3. Şarta Bağlı Çıktı
awk '$3 > 50 {print $1, $3}' data.txt
Üçüncü sütunu 50’den büyük olan satırların birinci ve üçüncü sütununu yazar.
4.4. Satır Numarası Gösterme
awk '{print NR, $0}' dosya.txt
Her satırın başına satır numarası ekler.
4.5. Satırdaki Sütun Sayısını Bulma
awk '{print NF}' dosya.txt
Her satırda kaç sütun olduğunu gösterir.
5. İleri Seviye Örnekler
5.1. Ortalama Hesaplama
awk '{sum += $2} END {print "Ortalama:", sum/NR}' data.txt
İkinci sütunun ortalamasını hesaplar.
5.2. Belirli Kelimeyi İçeren Satırları Bulma
awk '/ERROR/ {print $0}' syslog.log
İçinde ERROR geçen satırları yazdırır.
5.3. Şartlı Formatlı Çıktı
awk '$3 > 80 {print "Yüksek not:", $1, $3; next} $3 < 50 {print "Düşük not:", $1, $3}' notlar.txt
Üçüncü sütundaki değere göre farklı mesajlar yazdırır.
6. awk ile Kullanışlı İpuçları
- Varsayılan ayırıcı boşluktur, ama -F ile ,, ;, : gibi ayırıcılar tanımlanabilir.
- awk komutları regex (düzenli ifadeler) destekler.
- BEGIN ve END bloklarıyla işlem öncesi ve sonrası ek çıktılar alınabilir.
Örnek:
awk 'BEGIN {print "Başlangıç"} {print $1} END {print "Bitti"}' dosya.txt
7. Sonuç
awk, basit log incelemeden karmaşık raporlamalara kadar metin işleme dünyasının İsviçre çakısı gibidir. Linux’ta özellikle sistem yöneticileri, veri analistleri ve geliştiriciler için kritik bir araçtır.