Konuyu Açan
#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
2. Niteliklere göre filtreleme örnekleri
3. Kayıt türlerini sınıflandırma ve hata seviyelerini ayırma
4. Güvenlik ve performans ipuçları
5. Alternatifler ve ileri seviye teknikler
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?
İş 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: KOD
1
grep -in "failed login" /var/log/auth.log - -r veya -R ile dizinler içinde rekursif arama yapılır. KOD
1
grep -R "timeout" /var/log - -o sadece bulunan eşleşmeyi yazdırır. KOD
1
grep -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. KOD
1
grep -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: KOD
1
grep -i "failed password" /var/log/secure* - Zaman damgası içeren kayıtları filtreleme ve formatlama: KOD
1
grep -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ı: KOD
1
grep -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: KOD
1
grep -E "^(INFO|WARN|ERROR):" logfile.log - Belirli IP’den gelen istekleri izleme: KOD
1
grep -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 ile uygulanabilirlik kazanın.KOD
1
grep -f patterns.txt logfile.log - Çok sayıda eşleşmeyi üretken biçimde incelemek için gibi akış kontrolü kullanın.KOD
1
grep -nE "pattern" logfile.log | head -n 100
5. Alternatifler ve ileri seviye teknikler
- awk ile sütun bazlı filtreleme ve dönüşüm: KOD
1
awk -F"," '$3 == "ERROR" {print $1","$2","$3}' logfile.csv - sed ile desen değiştirme ve temizleme: KOD
1
sed -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?
