Şu anda büyük (8.1GB) bir erişim günlüğü dosyasını işlemek için bir awk komut dosyası çalıştırıyorum ve bitmek için sonsuza dek sürüyor. 20 dakika içinde, yazmayı beklediğim 14MB (1000 + - 500) MB yazdı ve bir şekilde daha hızlı işleyebilir miyim diye merak ediyorum. İşte Apache'nin işlenmesi hızlı bir şekilde günlüğe kaydediyor
awk script:#!/bin/bash awk '{t=$4" "$5; gsub("[\[\]\/]"," ",t); sub(":"," ",t);printf("%s,",$1);system("date -d \""t"\" +%s");}' $1
DÜZENLEME: olmayan awkers için
, senaryo, her satırı okur tarih bilgilerini alır, bir biçime değiştirir date
programı, tarihi 1970’ten bu yana saniye olarak gösteren ve IP ile birlikte bir .csv dosyasının satırı olarak döndüren tarihi tanımak ve çağırır.
Örnek girişi: 189.5.56.113 - - [22// 2010 Ocak: 05: 54: 55 0100] "(...) GET"
İade çıkışı: 189.5.56.113, 124237889
Belki senaryo bize böylece olmayan awkers ne yaptığını anlatabilir misiniz Başka bir dilde daha hızlı bir yazı yazabilir mi?Yine de, bir bakışta, sisteme() her yeni kayıtta yeni bir işlem oluşturmanın oldukça yavaş olması gerekir. –