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

0 Respuestas 9 Visitas
Valoraciones
Participantes
Autor del tema #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:
    CÓDIGO
    1grep -in "failed login" /var/log/auth.log
  • -r veya -R ile dizinler içinde rekursif arama yapılır.
    CÓDIGO
    1grep -R "timeout" /var/log
  • -o sadece bulunan eşleşmeyi yazdırır.
    CÓDIGO
    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.
    CÓDIGO
    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:
    CÓDIGO
    1grep -i "failed password" /var/log/secure*
  • Zaman damgası içeren kayıtları filtreleme ve formatlama:
    CÓDIGO
    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ı:
    CÓDIGO
    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:
    CÓDIGO
    1grep -E "^(INFO|WARN|ERROR):" logfile.log
  • Belirli IP’den gelen istekleri izleme:
    CÓDIGO
    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
    CÓDIGO
    1grep -f patterns.txt logfile.log
    ile uygulanabilirlik kazanın.
  • Çok sayıda eşleşmeyi üretken biçimde incelemek için
    CÓDIGO
    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:
    CÓDIGO
    1awk -F"," '$3 == "ERROR" {print $1","$2","$3}' logfile.csv
  • sed ile desen değiştirme ve temizleme:
    CÓDIGO
    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?

Debes haber iniciado sesión para responder.

Usuarios que están viendo este tema (Total: 3, Miembros: 3, Invitados: 0)
Total: 3 (miembros: 3, invitados: 0)
0 citas seleccionadas