Hallo, On Wednesday 23 June 2004 18:06, Hannes Vogelmann wrote:
Hi,
Am Mit, 23 Jun 2004, schrieb Dominik Schopper:
ungef. lösungsansatz in perl:
[...]
Hmmm, macht teilweise schon das richtige, allerdings bringt es die Zeilen total durcheinander, weil es die Zeilen nach den Inhalten des jeweils ersten Feldes sortiert. Das sieht dann z.B. so aus:
0 646543 0 0 646638 0 1 636858 0 1 639937 0 10 643148 0 10 648916 0 100 641890 0 100 647527 0 1000 720644 0 1000 877545 0 1001 718964 0 1001 895110 0 1002 713754 0 1002 877844 0 1003 718324 0 1003 886145 0 1004 714798 0 1004 884013 0 1005 711439 0 1005 873382 0 1006 717328 0 1006 887898 0 1007 716662 0 1007 874269 0 1008 711683 0 1008 881582 0 1009 727464 0 1009 883066 0 101 638048 0
Die Zeilen müssen aber in der richtigen Reihenfolge bleiben, da der Zeilenindex auch eine physikalische Bedeutung in Bezug auf die beiden anderen Spalten hat. Mir ist aber schon nicht klar wo die Neusortierung stattfindet, beim Einlesen oder beim Zusammenfügen. Aber Danke schonmal für die Bemühungen. Ich muss mich wohl dochmal näher mit perl beschäftigen.
Die Neusortierung findet hier statt: foreach (sort keys %hash) # ^^^^ { print FOUT join($sep, $_, $hash{$_}), "\n"; } Allerdings sortiert Perl in den Hashs auch schon vor. Entweder schreibt man sich also eine eigene Sortierfunktion, die sort übergeben wird, oder man nimmt eine andere Variante, die am besten nicht gleich die Daten in einen Hash einliest. Bei großen Dateien könnte das Probleme machen. Ferdinand