Konuyu Açan #1
grep ile veri çıktısını işleme

Bu konu, komut satırında grep kullanarak çıktıyı yakalama, filtreleme ve sonrasında başka araçlarla işleme yolunu adım adım gösterir. Özellikle günlük log dosyaları, yapılandırma dosyaları veya metin tabanlı veri akışlarında hızlı analiz ve dönüşüm ihtiyaçlarını karşılar.


Giriş ve temel prensip
  • grep, metin içinde desen aramak için kullanılan temel araçtır. -r veya -R ile dizinler içindeRecursive tarama yapılabilir. -n ile satır numarası, -H ile dosya adı çıktıya dahil edilir. -i ile büyük/küçük harf duyarlılığı esnetilir.
  • Temel kullanım şu şekildedir: grep [seçenekler] "desen" dosya
  • Desenler için basit metin, normal ifadeler veya genişletilmiş düzenli ifadeler kullanılır. -E ile Extended regex, -F ile sabit dize arama kullanılır.


Çıktıyı filtrelemek ve yönlendirmek
  • Basit filtreleme: grep "hatalı" log.txt
  • Soyutlama için çıktı üzerinde işlem: grep "ERROR" /var/log/syslog | cut -d' ' -f1-3
  • Bu örnekte ilk üç alanı alıyoruz; tarih ve saat gibi.
  • Çoklu desenler: grep -E "warning|err|fail" *.log
  • Dosya adlarını ve satır numaralarını korumak: grep -Hn "kullanıcı" access.log*
  • Ignore case: grep -i "timeout" *


Çıktıyı yeniden biçimlendirmek ve ileri işleme
  • awk ile alan bazlı dönüştürme: grep -i "timeout" /var/log/nginx/access.log | awk '{print $1" "$4" "$7}'
  • sed ile dönüştürme ve temizleme: grep -i "user" access.log | sed 's/.user=//;s/&.//' > users.txt
  • sort ve uniq ile özetleme: grep -i "session" activity.log | sort | uniq -c | sort -nr


Çeşitli senaryolar ve uygulanabilir stratejiler
  • Log analizi: sık görünen hataları ve oluşan saat dilimlerini belirlemek için kombinasyonlar kullanın. grep -E "ERROR|WARN" log/*.log | awk '{print $1" "$2" "$0}' | sort | uniq -c | sort -nr
  • Veriyi başka bir araçla beslemek: grep "pattern" data.txt | cut -d',' -f2-3 | sort -u > unique_pairs.txt
  • İncremental arama: tail -f log.txt | grep --line-buffered "CRITICAL" -y
  • --line-buffered ile gerçek zamanlı akışta beklenen tepki sürelerini iyileştirebilirsiniz.


Kısa ipuçları ve dikkat edilmesi gerekenler
  • Dosya boyutu büyük olduğunda -F ve -n ile başlayıp eşsiz sonuçları hızlıca elde etmek faydalı olabilir.
  • Çok sayıda deseni ararken -E kullanmak performansı iyileştirebilir.
  • Çok özel desenler için önce deseni netleştirmek ve ardından gereken alanları awk/sed ile çıkarmak iş akışını sadeleştirir.


Bu yaklaşım, metin tabanlı veri akışını hızlı biçimde tarama, filtreleme ve basit dönüştürme adımlarını tek bir komut zincirinde birleştirme imkanı sağlar. Büyük veri kümelerinde verinin hangi aşamada dönüştürüldüğünü net tutmak için adım adım ilerlemek tavsiye edilir.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi