Thread Dateien (.bz2) verarbeiten ohne tempfile
(7 answers)
Opened by monti at 2011-08-05 10:47
Hallo zusammen,
ich habe ein kleines Problem und suche Hilfe :) Ich will Textdateien (Logfiles, ältere liegen komprimiert als .bz2 vor. ZB detail-20110801.bz2, die aktuellste unkomprimiert) einlesen und verarbeiten. Momentan mache ich das so, dass ich über ein bash skript die Dateien von alt->neu sortiere und über bzcat in ein temporäres File schreibe. Dann öffne ich in meine Perl Skript die Datei ganz normal und verwurste sie mit Nun wollte ich ganz schlau sein und das ohne besagte temporäre Datei machen, denn die wird je nach Anzahl der bz2 Files recht groß. Also habe ich mir eine subroutine gebastelt die mir eine Dateiliste sortiert: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sub byfilename { if($a =~ /detail$/) { return 1; } if($b =~ /detail$/) { return -1; } $a =~ m/(\d+)/; $na = $1; $b =~ m/(\d+)/; $nb = $1; $na <=> $nb; } Das funktioniert auch soweit: Code (perl): (dl
)
@dateien = sort byfilename </var/log/radius/detail*>; Da habe ich ein schön sortiertes Array von alt nach neu mit /var/log/radius/detail als neuestem File am Ende. Hat jemand eine Idee wie ich das nun ohne Umweg über ein temp File verarbeiten kann? Momentan habe ich eine wirre Idee, das ganze mit map zu einer Liste von bzcats zu verwursten, sowas in der Art: Code (perl): (dl
)
@dateien = map { /\.(bz2)$/ ? "bzcat $_ |" : $_ } @dateien; Da hänge ich dann aber an der Weiterverarbeitung. Bin für jeglichen Rat dankbar :) Tschau Stefan modedit Editiert von GwenDragon: Code als Perl formatiert Last edited: 2011-08-05 10:51:13 +0200 (CEST) |