On Tuesday 08 June 2004 11:50, Andreas Feile wrote:
Moin David.
David Haller, Montag, 7. Juni 2004 15:02:
awk -F "\." '{ for(i=$1; i<=$3; i++) { print i; } }'
Wie ich gestern schon schrieb konnte ich mir mit diesem Denkanstoß etwas zusammenbauen, was gut funktioniert. Gut? Nicht ganz, denn:
Die Quelltabelle hat 13390 Datensätze, die mittlerweile so aussehen:
01001;01465;Dresden;Dresden;Sachsen 01435;01445;Meißen-Radebeul;Dresden;Sachsen [+13388 weitere Datensätze]
Lasse ich awk folgendermaßen drüberlaufen:
awk -F "\;" '{ for(i=$1; i<=$2; i++) { print i, $3, $4, $5 ; } }' OFS="\;" < datei > output
Dann stimmen die ersten paar hundert oder auch paar Tausend Datensätze. Aber irgendwann verschluckt sich awk offenbar, und es stehen Werte zusammen in einer Output-Zeile, die in der Input-Tabelle nicht in einer Zeile standen. Ich habe das mehrfach überprüft, die Quelldatei ist OK. Es sieht für mich so aus, als würde awk die Zeilen plötzlich durcheinanderbringen.
Frage: habe ich bei awk ein Überlaufproblem, oder sowas in der Art? Denn wenn ich awk über eine Quelle mit nur ein paar Zeilen drüberjage, dann stimmt alles völlig einwandfrei
Deswegen mache ich seit langem nur noch kleine Sachen mit awk und alles andere mit Perl (ist dann sowieso schneller; ich hatte da mal ein sehr erhellendes Erlebnis mit awk im Zusammenspiel mit grossen Datenmengen): --- cut here --- #!/usr/bin/perl while (<>) { chomp; @F=split ";", $_; for ($i=$F[0]; $i<=$F[1]; $i++) { print "$i, $F[2], $F[3], $F[4]\n"; } } --- cut here --- versuchs mal: Aufruf wieder mit "skriptname inputdateiname > ouput" Andreas