Ich habe eine Apache access.log Datei, die um 35 GB in der Größe ist .. greppen durch sie keine Option mehr ist, ohne viel zu warten.Split access.log Datei von Terminen mit Kommandozeilen-Tool
Ich wollte es in viele kleine Dateien unterteilen, indem ich das Datum als Aufteilungskriterium verwende.
Datum ist im Format "[15/Okt/2011: 12: 02: 02 +0000]". Jede Idee, wie könnte ich es nur mit bash scripting, Standard-Textbearbeitungsprogramme (grep, awk, sed, und likes), Verrohrung und Umleitung tun?
Name der Eingabedatei ist access.log. Ich möchte Ausgabedateien Format haben wie access.apache.15_Oct_2011.log (das wäre der Trick, wenn auch nicht schön, wenn das Sortieren ..)
Sie haben Recht, Sir. Ich habe gerade auch Perl-Lösung getestet, und awk Lösung war um 3x schneller. Ich vermute, dass es mit der Tatsache zu tun hat, dass ein Beispiel für awk keine regulären Ausdrücke verwendet, sondern eine einfache String-Aufteilung, die effizienter sein könnte. Als akzeptierte Antwort markieren. –
Ich habe es gerade aktualisiert, um eine bessere Dateinamenausgabe zu haben. –
Oh, und ich benutze definitiv diese auf Produktion gegen 20 GB-Dateien jetzt ohne Probleme. Nimmt ungefähr 2 GB/Minute auf meinem System. –