Thread Doppelte Werte Ausfiltern
(8 answers)
Opened by Lebewesen at 2012-05-03 16:46
Hallo,
ich will ein log komprimieren, und mir nur das erste Auftreten/Veränderung eines Ergeignisses ausgeben lassen. Ich habe die Struktur jetzt als Skalar(CSV) im Arbeitsspeicher. Aufbau: ID; Datum; VeränderbareWerte 01; 2011-01-01; abc 02; 2011-01-01; jkl 01; 2011-01-02; abc 01; 2011-01-03; xyz Es soll quasi die dritte Zeile gelöscht werden. Mein Ansatz ist, dass ich das Datum lösche, und nach "\n" als trenner in ein Array splitte, welches ich dann in eine Hashmap überführe um alle duplikate auszufiltern. Dies schrumpfte das ganze von 4600 Zeilen auf 600 zusammen. Allerdings fehlt mir nun das Datum des ersten Vorkommens. $daten ist der Ursprung Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 my $daten1 = $daten; $daten1 =~ s%(.*?;).*?;(.*)%$1$2%g; my @daten=split(/\n/,$daten1); @daten=&del_double(@daten); sub del_double{ my %all=(); @all{@_}=1; return (keys %all); } Die Frage ist jetzt wie ich mir das Datum am besten wieder hole. Mein trivialer Ansatz währe gewesen Code: (dl
)
1 $daten sortieren Allerdings ist das wahrscheinlich nicht sehr performant, vorallem bei großen Datenmengen... Kann mich jemand vielleicht in die richtige Richtung lenken? Vielleicht geht das ganze ja auch viel einfacher... Vielen Dank, Bastian |