Thread Text-Datei in mehrere Dateien splitten
(21 answers)
Opened by hybi at 2013-07-23 11:07
Ich habe nun etwas weitergetüftelt und die Aufspaltung der gewünschten Zeilen soweit erzielt. Der Code sieht nun so aus:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #!/usr/bin/perl use warnings; use strict; my $i = 0; my $split = '@@'; open IN, 'wuw_gesamt.txt' or die "ERROR!\n"; open OUT, '> Dateien/wuw0.txt' or die "ERROR!\n"; while (<IN>) { if (m/^Jahrgang, Seite\s*\[\s*(\d{4}),\s+(\d+)\s\]\s*$/){ print OUT "Jahrgang [ $1 ]\nSeite [ $2 ]\n"; } elsif (m/^Datum.Aktenz.\s*\[\s*(\d*).(\d*).(\d{4})\s(.*)/){ print OUT "Tag [ $1 ]\nMonat [ $2 ]\nJahr [ $3 ]\nAktenzeichen [$4 \n"; } elsif (m/^Abteilung\s*\[\s*(.*)\s(\d*)\s\]\s(.*)$/){ print OUT "Abteilung [ $1 ]\nAbteilungsnummer [ $2 ] @@\n"; } elsif (/^(.*?)$split(.*)$/){ print OUT $1; close OUT; $i++; open OUT, '> Dateien/wuw' . $i . '.txt' or die "ERROR!\n"; print OUT $2; } else { print OUT $_; } } close IN; print "\n$i Dateien wurden erfolgreich erstellt.\n"; Das Problem nun: er splittet die einzelnen Einträge untereinander nicht mehr (also an der Stelle @@). Wie man im elsif-Block Nummer 2 sieht, habe ich das @@ nochmal eingefügt damit der nächste elsif-Block darauf anschließen kann. Tut dies aber nicht, spaltet zwar die Zeilen wie bisher gewollt, der letzte elsif-Block wird aber ignoriert und alle Einträge untereinander in einer Datei geprintet. Wahrscheinlich ist es ein Denkfehler meinerseits aufgrund der mangelnden Programmierkenntnisse. Hat jemand eine Idee wie man das lösen könnte? Hier nochmal ein Auszug aus der Originaldatei die bearbeitet werden soll: Code: (dl
)
1 Jahrgang, Seite [ 1996, 1057 ] Last edited: 2013-07-26 12:08:24 +0200 (CEST) |