Sed ile rapor oluşturma

0 Ответов 12 Просмотров
Оценившие
Участники
Автор темы #1
Sed ile rapor oluşturma

Bu yazı, sed komutunu kullanarak basit raporlar üretmenin nasıl mümkün olduğunu, adım adım ve uygulanabilir örneklerle anlatır. Özellikle log dosyaları ya da metin tabanlı günlüklerden özet çıkarma gibi ihtiyaçlarda sed’in satır bazında çekme, dönüştürme ve filtreleme gücünü pekiştirmek hedeflidir.


İlk olarak temel prensibi hatırlayalım: sed, akışa bağlı olarak satırları işler ve istenen desenleri bulup dönüştürür. Rapor üretiminde, genellikle şu üç işlev üzerinde yoğunlaşırız:
  • Filtreleme: İlginç satırları ayıklamak. Örneğin belirli bir hata kodu veya tarih aralığına sahip satırları seçmek.
  • Dönüştürme: Seçilen satırların belirli alanlarını yeniden biçimlendirmek veya hesaplamalar yapmak. Örneğin tarih formatını değiştirmek, değerleri toplamak ya da özetlemek.
  • Özetleme ve çıktı: Sonuçları tek bir dosyada bir araya getirmek ya da belirli sütunları hizalamak. Bu, CSV benzeri raporlara uygun şekilde düzenlenmiş çıktılar olabilir.


Basit bir örnek üzerinden gidelim. Diyelim ki günlük log dosyamız var ve her satır şu formata sahip:
[Tarih] [Seviye] [Kullanıcı] [Mesaj]

Amaç: Hata seviyesindeki satırları toplamak ve her kullanıcının hata sayısını saymak; sonuçları tarih ve kullanıcı başlığıyla özetlemek.

Kod akışı şu şekilde olabilir:
КОД
123456789
[b]1) Hata satırlarını filtreleyin[/b]
sed -n '/\\[ERROR\\]/p' gunluk.log > hatalar.log

[b]2) Kullanıcıya göre sayım yapmak için alanları ayırıp yeniden biçimlendirme[/b]
sed -n 's/\\(.[i]\\) \\[ERROR\\] \\(.[/i]\\) -.*/\\2|\\1/p' hatalar.log > kullanici_hata.csv

[b]3) Basit bir özetleme için dışa aktarılan dosyayı toplu olarak işlemek[/b]
[b](Bu adımda sed yerine awk veya sort uniq kullanımı tercih edilir; sed tek başına özet üretmek için sınırlı kalabilir)[/b]


Notlar:
  • Sed’in içsel hesaplama kısıtları nedeniyle bazen özetleme için awk veya sort/uniq gibi araçlarla birlikte kullanmak pratik ve güvenilir olur. Sed, satır içindeki desen değiştirme ve alan ayrıştırmada en hızlı çözümleri sağlar.
  • Tarih ve saat formatı ile ilgili dönüşümlerde sed’in uzantı dizgileriyle değişiklik yapmak hızlıdır; örneğin YYYY-MM-DD biçimini DD/MM/YYYY olarak değiştirmek veya zaman damgalarını belirli bir formata uyacak şekilde yeniden yazmak mümkündür.
  • Çok daha karmaşık raporlar için birden fazla komutu tek tek çalıştırmak yerine sed ile akışı kesintisiz bir şekilde işleyen bir boru hattı kurmak isabetli olabilir: sed ile filtre, awk ile özetleme, sort ile sıralama, çıktı dosyası ile nihai raporu oluşturma.


Görüştüğümüz teknik çerçeve ışığında, kendi veri kümeniz ve hedeflerinizle ilgili spesifik bir örneği paylaşabilir misiniz? Mesela hangi alanları özetlemek istiyorsunuz veya hangi log formatını kullanıyorsunuz? Bu, sizin için adım adım işlemleri daha kesin ve uygulanabilir hâle getirir.

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

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