grep ile düzenli ifadelerle kayıt filtreleme: pratik kılavuz ve ipuçları

0 Antworten 9 Aufrufe
Bewertende
Teilnehmer
Themenersteller #1
grep ile düzenli ifadelerle kayıt filtreleme: pratik kılavuz ve ipuçları

İş akışınızı hızlandırmak için grep ile düzenli ifadelerin nasıl doğru yapılandırılacağını adım adım ele alalım. Özellikle log dosyaları, CSV/TSV kayıtları ve e-posta filtreleri üzerinde örnekler üzerinden ilerleyelim; çünkü gerçek dünyada bu araç, günlük yönetimi ve suçlama/izleme için sıkça kullanılır.

1. Temel prensipler ve en sık kullanılan seçenekler
  • grep temel olarak satır bazlı arama yapar. -E ile genişletilmiş regex (ERE), -F ile sabit dize karşılaştırması, -i ile büyük/küçük harf duyarsız arama, -n ile satır numarasını gösterir. Örneğin:
    CODE
    1grep -in "failed login" /var/log/auth.log
  • -r veya -R ile dizinler içinde rekursif arama yapılır.
    CODE
    1grep -R "timeout" /var/log
  • -o sadece bulunan eşleşmeyi yazdırır.
    CODE
    1grep -o "ERROR [0-9]+" logfile.log
  • -P ile Perl uyumlu regex kullanımı, -z ile satırları sıfırla ayrılmış bloklar olarak işler.
    CODE
    1grep -P "\berror\b.*\d{4}" logfile.log


2. Niteliklere göre filtreleme örnekleri
  • Belirli bir kullanıcıya ait oturum açma hatalarını bulma:
    CODE
    1grep -i "failed password" /var/log/secure*
  • Zaman damgası içeren kayıtları filtreleme ve formatlama:
    CODE
    1grep -Eo "^[A-Za-z]{3} [ 0-9]{2} [0-9:]{8}" syslog.log | sort | uniq -c
  • CSV dosyasında belirli bir sütunu hedeflemek için temel regex ve -E kullanımı:
    CODE
    1grep -E "^[^,][i],[^,][/i],(ERROR|WARN)," access.csv


3. Kayıt türlerini sınıflandırma ve hata seviyelerini ayırma
  • Örneğin hata seviyesi INFO, WARN, ERROR olan satırlarını ayırma:
    CODE
    1grep -E "^(INFO|WARN|ERROR):" logfile.log
  • Belirli IP’den gelen istekleri izleme:
    CODE
    1grep -E "^[^ ]+ [^ ]+ [^ ]+ .* from 192\.0\.2\.1" access.log


4. Güvenlik ve performans ipuçları
  • Büyük log dosyalarında bellek dostu işlem için -F ve -f ile dosya tabanlı filtreler kullanın. Ayrıca grep --line-buffered ile gerçek zamanlı çıktı alabilirsiniz.
  • Sık kullanılan desenleri bir dosyada toplayıp saklayın ve
    CODE
    1grep -f patterns.txt logfile.log
    ile uygulanabilirlik kazanın.
  • Çok sayıda eşleşmeyi üretken biçimde incelemek için
    CODE
    1grep -nE "pattern" logfile.log | head -n 100
    gibi akış kontrolü kullanın.


5. Alternatifler ve ileri seviye teknikler
  • awk ile sütun bazlı filtreleme ve dönüşüm:
    CODE
    1awk -F"," '$3 == "ERROR" {print $1","$2","$3}' logfile.csv
  • sed ile desen değiştirme ve temizleme:
    CODE
    1sed -n '/ERROR/ p' logfile.log | sed 's/^[0-9]\+ //g'


Bu konuyu kendi ortamınıza göre nasıl özelleştireceğinizi merak ediyorum: hangi tür kayıtlar üzerinde çalışıyorsunuz ve hangi desenleri en çok sıkıştırıyorsunuz? Özellikle hangi deseni güvenlik taraması veya operasyonel günlükler için kullanmayı düşünüyorsunuz?

Sie müssen angemeldet sein, um zu antworten.

Benutzer, die dieses Thema gerade ansehen (Gesamt: 3, Mitglieder: 3, Gäste: 0)
Gesamt: 3 (mitglieder: 3, gäste: 0)
0 Zitate ausgewählt