Thread Text-Datei in mehrere Dateien splitten
(21 answers)
Opened by hybi at 2013-07-23 11:07 Guest hybi Ich war wohl etwas voreilig, eine allerallerletzte Agenda, heiliges Ehrenwort! Es sollen noch der Jahrgang und die Seitenzahl in den jeweiligen Dateinamen eingetragen werden. Also wenn wir ursprünglich Jahrgang, Seite [ 1996, 1057 ] hatten, soll nach dem splitten für diesen Eintrag die Datei 96_1057.txt heißen. Oder aus Jahrgang, Seite [ 1993, 331 ] soll 93_0331.txt werden. Hier nochmal der aktuelle Stand des Scripts: 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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 #!/usr/bin/perl use warnings; use strict; my $i = 0; my $split = '@@'; open IN, 'wuw_gesamt.txt' or die "ERROR!\n"; open OUT, '> Dateien/Eintrag_0.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 "Tag", "Monat", "Jahr" und "Aktenzeichen" trennen # elsif (m/^Datum.Aktenz.\s*\[\s*(\d*).(\d*).(\d{4})\s(.*)\s\]\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 ]"; } # Die Zeile "Schlagworte" trennen # elsif (m/^Schlagworte\s*\[\s*(.*)\s*\]$/){ my @tags = split /, /, $1; for my $counter ( 1 .. @tags ) { print OUT sprintf "Schlagwort %2s [ %s ]\n", $counter, $tags[$counter-1]; } } # Die Zeile "Vorschriften" trennen # elsif (m/^Vorschriften\s*\[\s*(.*)\s*\]$/){ my @tags = split /; /, $1; for my $counter ( 1 .. @tags ) { print OUT sprintf "Vorschrift %2s [ %s ]\n", $counter, $tags[$counter-1]; } } # 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/Eintrag_' . $i . '.txt' or die "ERROR!\n"; print OUT $2; } } close IN; print "\n$i Dateien wurden erfolgreich erstellt.\n"; Last edited: 2013-07-30 16:15:02 +0200 (CEST) |