Autor del tema #1
Sed ile günlük filtreleme

[giriş]
Günlük dosyalarıyla çalışırken belirli kalıpları hızlıca ayıklamak için sed komutu güç verebilir. Sed, akışkan bir düzenleyici olarak satırları akış içinde işler; çok büyük günlük dosyalarında bile doğrudan belirli desenleri çıkarabilir, değiştirebilir veya yönlendirebilir. Aşağıdaki örnekler, günlükte sık karşılaşılan görevleri güvenli ve tekrarlanabilir bir şekilde yerine getirmek için temel bir yolaçtır.

[ul]
  • Belirli bir tarih içeren satırları seçme
    Bu, günlük dosyalarında belirli günleri ya da tarih aralıklarını filtrelemek için kullanışlıdır. Örnek olarak 2024-07-15 tarihini içeren satırları almak:
    CÓDIGO
    1sed -n '/2024-07-15/p' /path/to/gunluk.log


  • Günlükten hata mesajlarını ayıklama
    Error veya hata içeren satırları çıkarmak için:
    CÓDIGO
    1sed -n '/error/Ip' /path/to/gunluk.log

    Burada i bayrağı büyük/küçük harfe duyarlılığını azaltır, p satırı yazdırır.

  • Belirli bir süre aralığındaki kayıtları toplama
    Örneğin 12:00 ile 14:59 arasındaki satırları çekmek için düzenli ifade kullanılır:
    CÓDIGO
    1sed -n '/2024-07-15 12:/,/2024-07-15 14:59:/p' /path/to/gunluk.log

    (Kodun güvenilirliği için zaman damgası formatını log dosyanızla uyumlu şekilde ayarlayın.)

  • Satırları yeniden biçimlendirme veya temizleme
    Gereksiz boşlukları kaldırma:
    CÓDIGO
    1sed -E 's/[[:space:]]+/ /g' /path/to/gunluk.log

    Kullanıcıya göre satır başını/sonunu temizlemek:
    CÓDIGO
    1sed -E 's/^\\s+|\\s+$//g' -e 's/\\s+/ /g' /path/to/gunluk.log


  • Günlük üzerinden belirli alanları yeniden yönlendirme
    Örneğin CSV benzeri günlükte ikinci alanı çıkartıp yeni dosyaya yazdırma:
    CÓDIGO
    1sed -n 's/^[^,][i],\\([^,][/i]\\).*/\\1/p' /path/to/gunluk.csv > /path/to/second_field.txt

    [/ul]

    Pratik ipuçları
    • Büyük dosyalar için sed sürekli olarak tüm dosyayı değil, akış olarak işlediğinden bellek üzerinde daha az baskı yapar. Ancak çok büyük günlükler için dosyayı parçalara bölüp her parça üzerinde işlemler yapmak daha güvenli olabilir.
    • Desenleri ne kadar hassas belirtirseniz sonuç o kadar güvenilir olur. Özellikle tarih ve saat formatlarında log üreticileri farklı biçimler kullanabildiğinden, kendi günlük formatınıza özel desenler oluşturun.
    • Yerine yazılarla çalışırken -i bayrağını dikkatli kullanın; orijinal dosyayı değiştirir. Geri almak için yedek tutun veya komutu -i'' ile çalışma yapmadan önce bir kopya oluşturarak test edin.


    [paragraf]
    Sed ile günlük filtrelemenin temel mantığını kavradıktan sonra, otomasyona dönüştürmek için bir zamanlayıcı veya basit bir shell script yazmak mantıklı olur. Örneğin günlüklerinizi her saat başı filtrelemek ve sonuçları ayrı bir log dosyasına kaydetmek için bir betik şu şekilde başlayabilir:
    CÓDIGO
    1234567#!/bin/sh
    LOG="/var/log/app/gunluk.log"
    OUT_DIR="/var/log/app/filtered"
    mkdir -p "$OUT_DIR"
    DATE=$(date +%Y-%m-%d_%H%M%S)
    sed -n '/error/Ip' "$LOG" > "$OUT_DIR/error_$DATE.log"
    sed -n '/2024-07-15/Ip' "$LOG" > "$OUT_DIR/date_filtered_$DATE.log"
    

    Bu basit örnek, sed’in akış içindeki dönüşümleri nasıl otomatikleştireceğini gösterir ve günlük analizi için güvenilir bir taban oluşturur.
    [/paragraf]

    [closing]
    Sed ile günlük filtreleme konusunda kendi günlük formatınıza uygun desenleri belirleyerek daha sofistike akışlar kurabilirsiniz. Yorumlarınız, benzer senaryolarda hangi desenlerin en çok işe yaradığını paylaşmanızı sağlar.
  • Debes haber iniciado sesión para responder.

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