Konuyu Açan
#1
Giriş ve bağlam
Birçok sistem yöneticisi ve geliştirici günlük, olay kaydı veya performans verisini hızlı bir şekilde özetleyip raporlamak için awk’ı kullanır. Özellikle log dosyalarını analiz ederken satır tabanlı işlemeyi kolaya indirir; belirli sütunları seçer, hesaplama yapar ve sonuçları tek bir tablo halinde sunar. Bu yazıda, günlük raporları, özet tablolar ve otomasyon için temel teknikleri sade örneklerle ele alacağım.
1) Temel yapı ve alan çıkarımı
Awk programı her satırı alanlara böler; varsayılan olarak boşluk veya sekme ile ayrıştırır. Örneğin, bir log dosyasında tarih, kullanıcı ve işlem gibi alanlar varsa:
Bu komut her satırdaki birinci, ikinci ve beşinci alanı yan yana getirir. Alan sınırlarını değiştirmek için -F seçeneğini kullanabilirsin:
Burada alanlar virgülle ayrılmıştır.
2) Filtreleme ve koşullu raporlar
Sadece belirli koşullara uyan satırları dahil etmek için if şartlarını kullanabilirsin:
Ya da belirli bir tarih aralığında rapor yapmak:
[code]
awk '$1 >= "2024-01-01" && $1
Birçok sistem yöneticisi ve geliştirici günlük, olay kaydı veya performans verisini hızlı bir şekilde özetleyip raporlamak için awk’ı kullanır. Özellikle log dosyalarını analiz ederken satır tabanlı işlemeyi kolaya indirir; belirli sütunları seçer, hesaplama yapar ve sonuçları tek bir tablo halinde sunar. Bu yazıda, günlük raporları, özet tablolar ve otomasyon için temel teknikleri sade örneklerle ele alacağım.
1) Temel yapı ve alan çıkarımı
Awk programı her satırı alanlara böler; varsayılan olarak boşluk veya sekme ile ayrıştırır. Örneğin, bir log dosyasında tarih, kullanıcı ve işlem gibi alanlar varsa:
KOD
12
awk '{print $1, $2, $5}' logfile.log
Bu komut her satırdaki birinci, ikinci ve beşinci alanı yan yana getirir. Alan sınırlarını değiştirmek için -F seçeneğini kullanabilirsin:
KOD
12
awk -F"," '{print $1, $3}' data.csv
Burada alanlar virgülle ayrılmıştır.
2) Filtreleme ve koşullu raporlar
Sadece belirli koşullara uyan satırları dahil etmek için if şartlarını kullanabilirsin:
KOD
12
awk '$3 ~ /ERROR/ {print $1, $2, $3}' log.txt
Ya da belirli bir tarih aralığında rapor yapmak:
[code]
awk '$1 >= "2024-01-01" && $1
