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

Gast hybi
 2013-07-26 11:44
#169145 #169145
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
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
Jahrgang, Seite  [ 1996, 1057 ]
Titel [ something something ]
Kurzbezeichnung [ STRA / Bank / ABCD ]
Schlagworte [ ABCFusionskontrolle ]
Institution [ AAAKommission ]
Datum/Aktenz. [ 15.01.1996  IV/M.123 ]
Vorschriften [ EG VO Nr. 134/1119 (ABCD) ]
Jahrgang, Seite [ 1996, 1057 ]
Abteilung [ EV 1234 ] @@
Jahrgang, Seite [ 1996, 1029 ]
Titel [ Untersagung eines konzentrativen Gemeinschaftsunternehmens nach der FKVO in den Niederlanden im Bereich der Märkte: Fernsehen, Fernsehwerbung und Fernsehproduktion ]
Kurzbezeichnung [ ABC / Veronica / ERETER ]
Schlagworte [ AAFsionskontrolle ]
Institution [ ACBKommission ]
Datum/Aktenz. [ 20.09.1995  IV/M.123 ]
Vorschriften [ EG VO Nr. 4064/89 (ABCD) ]
Jahrgang, Seite [ 1996, 1111 ]
Abteilung [ EV 1111 ] @@
Jahrgang, Seite [ 1996, 1227 ]
Titel [ something something something ]
Kurzbezeichnung [ Stromversorgung Kirch ]
Schlagworte [ something something something ]
Institution [ ABCD Karlsruhe ]
Datum/Aktenz. [ 14.02.1996  1 U 234/56 (Art.) ]
Vorschriften [ GKAV ]
Jahrgang, Seite [ 1996, 1234 ]
Abteilung [ OLG 1234 ] @@

Last edited: 2013-07-26 12:08:24 +0200 (CEST)

View full thread Text-Datei in mehrere Dateien splitten