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
#!/usr/bin/perl use warnings; use strict; open (FILE, "<wuw.txt"); my @raw_array=<FILE>; close(FILE); my $i=0; for (@raw_array) { # Zeilen in einen neuen array packen push (my @print_to_file, $_); # Wenn die Zeile @@ enthält if (/@@/) { # erstelle eine datei die $i.txt heißt open (NEWFILE, ">$i.txt"); # schreib die neue array in die neue datei foreach (@print_to_file) {print;} #datei zu close(NEWFILE); # neue array entleeren @print_to_file=""; # $i erhöhen $i++; } #ende if } #ende for
foreach (@print_to_file) {print;}
foreach (@print_to_file) {print NEWFILE;}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl use warnings; use strict; my $i = 0; my $split = '@@'; open IN, 'wuw_gesamt.txt' or die "Can't open in.txt: $!\n"; open OUT, '> Dateien/wuw1.txt' or die "Can't write to wuw1.txt: $!\n"; while (<IN>){ if (/^(.*?)$split(.*)$/){ print OUT $1 if $1; close OUT; $i++; open OUT, '> Dateien/wuw' . $i . '.txt' or die "Can't write to wuw +${i}.txt: $!\n"; print OUT $2 if $2; } else{ print OUT $_; } } close IN;
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";
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 ] @@
1
2
3
4
5
6
7
8
9
10
11
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;
}
1
2
3
4
5
6
7
8
9
elsif (m/^Abteilung\s*\[\s*(.*)\s(\d*)\s\]\s(.*)$/){
print OUT "Abteilung [ $1 ]\nAbteilungsnummer [ $2 ] @@\n";
}
if (/^(.*?)$split(.*)$/){
close OUT;
$i++;
open OUT, '> Dateien/wuw' . $i . '.txt' or die "ERROR!\n";
}
if (/^(.*?)$split(.*)$/){
if (/$split/){
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";
1
2
3
elsif (m/^Schlagworte\s*\[\s*(.*),\s(.*)$/){
print OUT "Schlagwort 1 [ $1 ]\nSchlagwort 2 [ $2 ] \n";
}
1
2
3
4
5
6
elsif (m/^Schlagworte\s*\[\s*(.*)\s*\}$/){
my @tags = split /, /, $1;
for my $counter ( 1 .. @tags ) {
print OUT sprintf "Schlagwort %-s [ %s ]\n", $counter, $tags[$counter-1];
}
}
perldoc -f sprintf...
Code: (dl )1
2
3
4
5
6
7
8
9
10
11
12
13
14* (minimum) width
Arguments are usually formatted to be only as wide as required to display the given value. You can override
the width by putting a number here, or get the width from the next argument (with * ) or from a specified
argument (e.g., with *2$):
printf "<%s>", "a"; # prints "<a>"
printf "<%6s>", "a"; # prints "< a>"
printf "<%*s>", 6, "a"; # prints "< a>"
printf '<%*2$s>', "a", 6; # prints "< a>"
printf "<%2s>", "long"; # prints "<long>" (does not truncate)
If a field width obtained through * is negative, it has the same effect as the - flag: left-justification.
...
1
2
3
4
5
printf "<%s>", "a"; # prints "<a>"
printf "<%6s>", "a"; # prints "< a>"
printf "<%*s>", 6, "a"; # prints "< a>"
printf '<%*2$s>', "a", 6; # prints "< a>"
printf "<%2s>", "long"; # prints "<long>" (does not truncate)
Guest hybiDanke 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
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";
printf "<%s>", "a"; # prints "<a>"
printf "<%6s>", "a"; # prints "< a>"
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
#!/usr/bin/perl # das folgende sollte in *jedem* Programm/Modul zu finden sein use strict; use warnings; # für das lesen und schreiben von Dateien use IO::File; # Datei mit den Datensätzen my $file = 'wuw.txt'; # lese Blockweise ein. Ein Block wird von "@@" # mit Zeilenendezeichen begrenzt local $/ = '@@' . "\n"; # öffne Datei zum Lesen my $fh = IO::File->new( $file, 'r' ) or die $!; while( my $block = <$fh> ) { # entferne das "@@" chomp $block; # in $. ist die "Nummer" des Blocks # öffne Datei zum Schreiben my $out = IO::File->new( $. . '.txt', 'w' ) or die $!; $out->print( $block ); }
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 60 61
#!/usr/bin/perl # das folgende sollte in *jedem* Programm/Modul zu finden sein use strict; use warnings; # für das lesen und schreiben von Dateien use IO::File; # Datei mit den Datensätzen my $file = 'wuw.txt'; # lese Blockweise ein. Ein Block wird von "@@" # mit Zeilenendezeichen begrenzt local $/ = '@@' . "\n"; # öffne Datei zum Lesen my $fh = IO::File->new( $file, 'r' ); while( my $block = <$fh> ) { # springe aus der Schleife wenn der Block leer ist last if !$block; # entferne das "@@" chomp $block; # in $. ist die "Nummer" des Blocks # öffne Datei zum Schreiben my $out = IO::File->new( $. . '.txt', 'w' ); # ersetze "Jahrgang, Seite" durch zwei Eintraege $block =~ s{ ^ Jahrgang, \s+ Seite \s+ \[ \s+ ([0-9]+), \s+ ([0-9]+) \s+ \] $ }{Jahrgang [ $1 ] Seite [ $2 ]}xmsg; # ersetze Datum/Aktenz. $block =~ s{ ^ Datum/Aktenz\. \s+ \[ \s+ (\d+)\.(\d+)\.(\d+) .*? ([^\s]+) \s+ \] $ }{Tag [ $1 ] Monat [ $2 ] Jahr [ $3 ] Aktenzeichen [ $4 ]}xms; # ersetze Abteilung $block =~ s{ ^ Abteilung \s+ \[ \s+ ([^\s]+) \s+ (\d+) \s+ \] .*? $ }{Abteilung [ $1 ] Abteilungsnummer [ $2 ]}xms; $out->print( $block ); }