Autor del tema
#1
awk ile ayrıntılı çıktı alma
Giriş ve temel kavramlar
[v]awk[/v] tek bir komutta hem filtreleme hem de metin işleme kapasitesine sahiptir. Standart kullanım biçimi şu şekilde: awk 'desen{işlem}' dosya. Desen kısmı satırları filtreler, işlem kısmı ise bu satırları dönüştürür. Bunu sütunlara bölünmüş veride kolayca kullanabilirsiniz. Örneğin bir CSV veya alanları boşlukla ayrılan bir dosyada, her satır için belirli sütunları hesaplayabilir, biçimlendirebilirsiniz.
Nitelikli çıktı için temel teknikler
Pratik senaryolar
Sonuç ve kapanış
awk ile ayrıntılı çıktı almak, verinin yapısına göre özelleştirilebilen güçlü bir araçtır. Doğru desenler, alan ayrımları ve biçimlendirme seçenekleri ile raporlar hem okunabilir hem de analiz için hemen kullanılabilir hale gelir. Bu tekniklerle kendi dosyalarınız üzerinde ne tür ayrıntılar yakalayabildiğinizi paylaşmak isterseniz, hangi veri setlerinde hangi biçimlendirme yaklaşımlarını kullandığınızı öğrenmek isterim.
Bu konu, awk’nin temel kullanımlarından başlayıp, çıktı üzerinde nasıl daha ayrıntılı ve kontrollü biçimde çalışabileceğinizi adım adım ele alır. Özellikle log dosyaları, olay kayıtları veya metin tabanlı veri setlerinde satır bazlı ve alan bazlı işlemlerde nasıl esnek filtreleme, raporlama ve biçimlendirme yapabileceğinizi örneklerle gösterir.
Giriş ve temel kavramlar
[v]awk[/v] tek bir komutta hem filtreleme hem de metin işleme kapasitesine sahiptir. Standart kullanım biçimi şu şekilde: awk 'desen{işlem}' dosya. Desen kısmı satırları filtreler, işlem kısmı ise bu satırları dönüştürür. Bunu sütunlara bölünmüş veride kolayca kullanabilirsiniz. Örneğin bir CSV veya alanları boşlukla ayrılan bir dosyada, her satır için belirli sütunları hesaplayabilir, biçimlendirebilirsiniz.
Nitelikli çıktı için temel teknikler
- Alanları tanımlama ve yeniden biçimlendirme: {print $1, $2, $3} gibi ifadelerle alanları çekip, gerektiğinde araya sabit metinler veya hesaplanmış değerler ekleyebilirsiniz. Örneğin: Bu yaklaşım, sütunları hizalı ve okunabilir kılar.CÓDIGO
1
awk '{printf "%-20s %-10s %8.2f\n", $1, $2, $3}' dosya - Koşullu çıktı: gibi ifadelerle belirli şartları sağlayan satırları hedefleyebilirsiniz. Büyük log dosyalarında hızlı özet için kritiktir.CÓDIGO
1
awk '$3 > 100 {print $1" "$3}' log.txt - Birden çok alanı birleştirme: Bu, alan opsiyonlarıyla çalışırken okunabilirliği artırır.CÓDIGO
1
awk '{name=$1" "$2; print name, $3}' dosya - Satır bazlı dönüştürme: Belirli desenleri içeren satırları özel biçimde işlemek için uygundur.CÓDIGO
1
awk '/error/ {print "HATA:", $0}' log.txt - Biçimlendirilmiş çıktılar: Metin tabanlı raporlar için esnek biçimlendirme sağlar.CÓDIGO
1
awk '{printf "%-10s | %s\n", $1, substr($0, index($0,$2))}' dosya - Tarih ve zaman işleme: Tarih biçimini çıkışta standartlaştırmak için awk’in tarih parçalarını hesaplayabilir, örneğin .CÓDIGO
1
awk '{split($0,a," "); print a[1]"-"a[2]"-"a[3]}' dosya - İmport/eksport ve alan adları: Dosya içindeki sütun adlarını almak veya değiştirmek için gibi satırlar kullanılır. Bu, dışa aktarılan veri için başlık satırı eklemeyi kolaylaştırır.CÓDIGO
1
NR==1{print "Başlık:", $0} - İç içe komutlar ve değişkenler: BEGIN ve END blokları ile toplamlar, ortalamalar veya dışa aktarma süreçlerini tek pass’ta gerçekleştirilebilir. ortalama hesaplar.CÓDIGO
1
awk 'BEGIN{sum=0; n=0} {sum+=$3; n++} END{print sum/n}' dosya - Dosya yönetimi ve çıktı yönlendirme: awk çıktısını doğrudan dosyaya yazdırabilirsiniz: veya aynı anda hem ekrana hem dosyaya yazdırma için tee kullanımı:CÓDIGO
1
awk '{print $0}' dosya > cikti.txtCÓDIGO1
awk '{print $0}' dosya | tee cikti.txt
Pratik senaryolar
- Sunucu loglarından hata satırlarını özetlemek: CÓDIGO
1
awk '/ERROR/ {print $1" "$2": "$0}' /var/log/sys.log | sort | uniq -c | sort -nr - CSV tabanlı satış kaydında toplam satış değerini hesaplamak: CÓDIGO
1
awk -F"," 'NR>1 {sum += $5} END{print "Toplam:", sum}' sales.csv - Belirli bir aralıktaki satırları seçmek: Böylece dışarıdan threshold değeri girilir.CÓDIGO
1
awk 'NR>=100 && NRthresh {print $0}' dosya - Dosya boyutu büyükse akıllı işleme: akış halinde işlemek için dosyayı satır satır okuyup hafızayı mümkün olduğunca düşük tutabilirsiniz.
- Üstveriyle çalışmak: BEGIN bloğunda başlıkları eklemek veya END bloğunda özet raporu üretmek, çıktı bütünlüğünü artırır.
Sonuç ve kapanış
awk ile ayrıntılı çıktı almak, verinin yapısına göre özelleştirilebilen güçlü bir araçtır. Doğru desenler, alan ayrımları ve biçimlendirme seçenekleri ile raporlar hem okunabilir hem de analiz için hemen kullanılabilir hale gelir. Bu tekniklerle kendi dosyalarınız üzerinde ne tür ayrıntılar yakalayabildiğinizi paylaşmak isterseniz, hangi veri setlerinde hangi biçimlendirme yaklaşımlarını kullandığınızı öğrenmek isterim.
