Thread Text-Datei in mehrere Dateien splitten
(21 answers)
Opened by hybi at 2013-07-23 11:07
Klasse, hat geklappt, vielen Dank!
Letzte Baustelle: Die Zeile Schlagworte soll ebenfalls noch gesplittet werden, dort werden die Schlagworte durch ein Komma getrennt. Beispiel, aus: Schlagworte [ Diskriminierung, Lieferverweigerung, Marktbeherrschendes Unternehmen ] soll Schlagwort 1 [ Diskriminierung ] Schlagwort 2 [ Lieferverweigerung ] Schlagwort 3 [ Marktbeherrschendes Unternehmen ] werden. Hier nochmal das gesamte Script mit renee's update: 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 39 40 41 42 43 #!/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>) { #Die Zeile "Jahrgang, Seite" in "Jahrgang" und "Seite" trennen if (m/^Jahrgang, Seite\s*\[\s*(\d{4}),\s+(\d+)\s\]\s*$/){ print OUT "Jahrgang [ $1 ]\nSeite [ $2 ]\n"; } #Die Zeile "Datum/Aktenz." in "Datum" und "Aktenzeichen" trennen elsif (m/^Datum.Aktenz.\s*\[\s*(\d*).(\d*).(\d{4})\s(.*)/){ print OUT "Tag [ $1 ]\nMonat [ $2 ]\nJahr [ $3 ]\nAktenzeichen [$4 \n"; } #Die Zeile "Abteilung" in "Abteilung" und "Abteilungsnummer" trennen elsif (m/^Abteilung\s*\[\s*(.*)\s(\d*)\s\]\s(.*)$/){ print OUT "Abteilung [ $1 ]\nAbteilungsnummer [ $2 ] \n"; } #Zeilen, die nicht getrennt werden wie bisher ausgeben else{ print OUT $_; } #An der Stelle "@@" die einzelnen Einträge trennen if (/^(.*?)$split(.*)$/){ close OUT; $i++; open OUT, '> Dateien/wuw' . $i . '.txt' or die "ERROR!\n"; print OUT $2; } } close IN; print "\n$i Dateien wurden erfolgreich erstellt.\n"; Jetzt hab ich versucht es ähnlich wie bisher handzuhaben (bspw. für Einträge mit 2 Schlagwörtern): Code: (dl
)
1 elsif (m/^Schlagworte\s*\[\s*(.*),\s(.*)$/){ Nun gibt es natürlich ein oder etliche Schlagwörter pro Eintrag. Wie könnte man das am elegantesten und effiziensten lösen? Last edited: 2013-07-26 14:20:43 +0200 (CEST) |