awk ile programlama
awk'ı tek satırlık süzgeçten öteye taşır; değişkenler, diziler, fonksiyonlar ve çoklu dosya işlemeyle gerçek rapor programları yazarsın.
Seviye 301 · 18 ders · 15 pratik lab
Dersler
Dilin temeli
- awk programının yapısı: desen-eylem, BEGIN ve END
- Yerleşik değişkenler: NR, NF, FS, OFS, RS
- Alan ayırıcılar: CSV, sekme ve düzenli ifade
- printf ile hizalı çıktı
- Kısa görev: /etc/passwd'dan kabuk türüne göre hesap sayımı
Veri yapıları
- İlişkisel dizilerle saymak ve toplamak
- Sonuçları sıralamak: asort ve sort ile birlikte
- Çok boyutlu anahtarlar ve SUBSEP
- Kısa görev: en çok istenen on URL ve ortalama yanıt süreleri
Akış ve fonksiyonlar
- if, while, for ve next
- Dizgi fonksiyonları: sub, gsub, split, substr, match
- Kendi fonksiyonunu yazmak
- getline, system ve dış komutlar: dikkatli kullanım
- Kısa görev: INI dosyasını bölüm-anahtar tablosuna çevir
Birden çok dosya
- İki dosyayı birleştirmek: NR==FNR kalıbı
- awk programını dosyaya yazmak ve seçeneklerle çalıştırmak
- gawk'a özgü olanaklar: zaman fonksiyonları ve CSV kipi
- Bitirme görevi: üç kaynaktan aylık hizmet raporu üreten awk programı
Pratik lablar
- Hesapları kabuğa göre say: /etc/passwd dosyasında her kabuğu kaç hesabın kullandığını awk ile say ve çoktan aza sırala.
- Ham veriden hizalı tablo üret: Sekmeyle ayrılmış sunucu envanterini printf ile sabit genişlikli, başlıklı ve sağa hizalı sayılı tabloya çevir.
- Çok satırlı kayıtları RS ile işle: Boş satırla ayrılmış çok satırlı kayıtlardan oluşan dosyayı RS ve FS ayarlarıyla kayıt başına tek satıra çevir.
- Alan sayısı hatalı satırları bul: Dışa aktarılan veri dosyasında alan sayısı beklenenden farklı olan satırların numaralarını NF ile bul.
- Zaman fonksiyonlarıyla son bir saatin kayıtlarını seç: gawk zaman fonksiyonlarıyla zaman damgalarını çevir ve yalnızca verilen andan önceki bir saatin kayıtlarını yazdır.
- Güvensiz system çağrısını kaldır: Girdi alanını system ile kabuğa geçiren awk betiğindeki enjeksiyon riskini göster ve dış komut kullanmadan yeniden yaz.
- En çok istenen adresleri ve ortalama süreyi bul: Erişim günlüğünden en çok istenen on adresi ve her birinin ortalama yanıt süresini ilişkisel dizilerle hesapla.
- Saat başına aktarılan veriyi topla: Erişim günlüğünde saat başına aktarılan toplam bayt miktarını hesapla ve en yoğun saati cevap olarak gir.
- Kullanıcı ve duruma göre çapraz tablo çıkar: Çok boyutlu anahtarlarla her kullanıcının başarılı ve başarısız giriş sayılarını yan yana gösteren tablo üret.
- INI dosyasını bölüm-anahtar tablosuna çevir: INI dosyasındaki her ayarı bölüm, anahtar ve değer sütunlarıyla tek satıra çeviren awk programı yaz.
- Tutarsız alanları gsub ile düzle: Telefon ve tarih alanları farklı biçimlerde yazılmış listeyi sub, gsub ve split ile tek biçime getir.
- Kendi fonksiyonunla bayt değerlerini okunur yap: Bayt sayılarını uygun birime çeviren bir awk fonksiyonu yaz ve disk raporunun boyut sütununa uygula.
- İki dosyayı NR==FNR ile birleştir: Kullanıcı numarası-ad dosyasını kullanarak oturum günlüğündeki numaraları adlarla değiştir.
- Tek satırlık awk'ı seçenekli programa çevir: Uzun tek satırlık komutu ayrı bir awk dosyasına taşı ve eşik değerini -v ile dışarıdan alacak hale getir.
- Üç kaynaktan aylık servis raporu üret: Kesinti kayıtları, servis sahipleri ve hedef değerler dosyalarını birleştirip servis başına kesinti süresi ve hedef durumu raporla.
Kurs hakkında
awk'ı tek satırlık süzgeçten öteye taşır; değişkenler, diziler, fonksiyonlar ve çoklu dosya işlemeyle gerçek rapor programları yazarsın.
Ne öğreneceksin
- Dilin temeli
- Veri yapıları
- Akış ve fonksiyonlar
- Birden çok dosya
Ön koşullar
Aynı yolun 101 ve 201 düzeyindeki konularına hâkim olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 301 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.