Thread Perl log-file nach timestamps sortieren (2 answers)
Opened by Gast at 2008-09-12 00:05

Gast Gast
 2008-09-12 00:05
#114554 #114554
Hallo,

ich stehe vor einem für mich schwieriges Problem. Und zwar habe ich hier ein log-file, eine Zeile ist jeweils ein zusammengehöriger Eintrag.

In jeder Zeile ist ein timestamp enthalten. Teilweise sind diese timestamps doppelt aufgrund der geringen Auflösung. Erschwerend kommt hinzu, dass die einzelnen Zeilen ungeordnet in das log-file purzeln. Nun möchte ich gerne das komplette file zeilenweise sortieren, und zwar nach timestamps. Bei Zeilen, die den gleichen timestamp enthalten ist es egal in welcher Reihenfolge sie kommen.

Vereinfacht sieht das log-file so aus:

Code: (dl )
1
2
3
4
5
6
0001 Ein Eintrag
0002 Noch ein Eintrag
0008 Ein weiterer Eintrag
0003 Und alles auch noch durcheinander
0008 Und aufgrund der geringen Auflösung auch noch gleiche timestamps
0010 Und es geht immer so weiter...


Mein erster Ansatz war nun wie folgt. Die komplette Datei zeilenweise in ein array einlesen. Nebenher in ein weiteres array den timestamp herauspfriemeln. Damit habe ich dann bereits den timestamp isoliert an Index X des timestamp-arrays, und die zugehörige Zeile des Zeilen-arrays ebenfalls an Index X. Dann habe ich das ganze in einen Hash gepackt, also Schlüssel wäre der timestamp und Wert dann die komplette zugehörige Zeile.

Der Masterplan sah dann so aus, dass ich die Schlüssel sortieren wollte (kein Problem), und dann über die sortierten Schlüssel in einem foreach-loop das Hash komplett durchgehen und in eine Datei speichern.

Leider geht das natürlich nicht, da ich ja doppelte Schlüssel habe (wegen der zu geringen Auflösung der timestamps). Bis ich das mal gemerkt habe hat es ja schon lange genug gedauert, aber jetzt hab ich irgendwie überhaupt keine Idee wie das zu lösen sein könnte.

Hat da vielleicht jemand eine zündende Idee?

Dankeschön...

View full thread Perl log-file nach timestamps sortieren