[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Logfiles splitten, Tool gesucht
[Thread Prev] | [Thread Next]
- Subject: Re: Logfiles splitten, Tool gesucht
- From: Marc Haber <mh+uugrn@xxxxxxxxxxxx>
- Date: Sun, 27 May 2012 16:52:48 +0200
- To: uugrn@xxxxxxxxxxxxxxx
On Sun, May 27, 2012 at 04:37:20PM +0200, Raphael Eiselstein wrote: > ich hab hier ein System gefunden (FreeBSD), bei dem es seit ca 2 Jahren > kein Logrotate gab, d.h. irgendwelche Access-Logs sind auf ca 5Mio > Zeilen angewachsen. > > Jetzt will ich die nachtraeglich splitten, fuer jeden Monat eine Datei. Warum? Spricht was dagegen, das Ding maximal zu komprimieren und bis zum Loeschzeitpunkt liegen zu lassen? Es ist doch beliebig unwahrscheinlich, dass das wirklich mal jemand angucken wird. > Ich koennte also ueber den Zeitraum iterieren und aus den grossen Dateien > fuer jeden Monat alle Zeilen rausgreppen und in eine Monats-Datei > schreiben. > > Finde ich nicht elegant, weil fuer jeden Monat jedes mal die ganze Datei > durchsucht wird. Fuer eine einmalige Aktion waere ich auch mit "uneffektiv" zufrieden. > Gibt es irgendwas in der Form von Grep, was mit sowas in der Art tut: > > $ < inputfile $tool Pattern1 Output1 Pattern2 Output2 ... > > ... und das ganze so, dass das inputfile nur einmal gelesen werden muss. Im Zweifel vielleicht mit perl, das abhaengig von einem pattern-Match in unterschiedliche Ausgabefiles schreibt? Oder das File erstmal in viele kleine Teile aufspalten und dann nur noch mit grep ueber die Teile ruebergehen, die einen Monatswechsel beinhalten? Vielleicht hilft auch das hier, http://blog.ganneff.de/blog/2008/05/01/splitting-huge-mbox-files.html, was eine aehnliche Aufgabe in ruby loest. in perl waere das etwas wie my $fh; my $month=""; my $thismonth=""; while( <> ) { chomp; if( /(irgendwas was au den monat matched)/ ) { $thismonth=$1; } if( !defined $fh or $month<>$thismonth) { $month=$thismonth; close $fh; open $fh, ">$month"; } print $fh $_; } (untested, die Idee kommt hoffentlich rueber) Gruesse Marc -- ----------------------------------------------------------------------------- Marc Haber | "I don't trust Computers. They | Mailadresse im Header Mannheim, Germany | lose things." Winona Ryder | Fon: *49 621 31958061 Nordisch by Nature | How to make an American Quilt | Fax: *49 621 31958062 -- UUGRN e.V. http://www.uugrn.org/ http://mailman.uugrn.org/mailman/listinfo/uugrn Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste Archiv: http://lists.uugrn.org/