Thread Text-Datei in mehrere Dateien splitten (21 answers)
Opened by hybi at 2013-07-23 11:07

Gast hybi
 2013-07-30 16:10
#169218 #169218
Guest hybi
Danke Linuxer und pq, hab mir das passende rausgesucht, sodass es jetzt so ausschaut, wie gewünscht.

Vielen Dank nochmal an alle, die ausgeholfen haben, falls noch etwas ist, melde ich mich nochmal!

Viele Grüße,
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)

View full thread Text-Datei in mehrere Dateien splitten