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

0 Ответов 9 Просмотров
Оценившие
Участники
Автор темы #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:
    КОД
    1grep -in "failed login" /var/log/auth.log
  • -r veya -R ile dizinler içinde rekursif arama yapılır.
    КОД
    1grep -R "timeout" /var/log
  • -o sadece bulunan eşleşmeyi yazdırır.
    КОД
    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.
    КОД
    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:
    КОД
    1grep -i "failed password" /var/log/secure*
  • Zaman damgası içeren kayıtları filtreleme ve formatlama:
    КОД
    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ı:
    КОД
    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:
    КОД
    1grep -E "^(INFO|WARN|ERROR):" logfile.log
  • Belirli IP’den gelen istekleri izleme:
    КОД
    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
    КОД
    1grep -f patterns.txt logfile.log
    ile uygulanabilirlik kazanın.
  • Çok sayıda eşleşmeyi üretken biçimde incelemek için
    КОД
    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:
    КОД
    1awk -F"," '$3 == "ERROR" {print $1","$2","$3}' logfile.csv
  • sed ile desen değiştirme ve temizleme:
    КОД
    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?

Чтобы ответить, необходимо войти в систему.

Пользователи, просматривающие эту тему (Всего: 3, Участники: 3, Гости: 0)
Всего: 3 (участники: 3, гости: 0)
0 цитат выбрано