Thread Regex ausdrücke und bestimmte Zeile machen Probleme (12 answers)
Opened by orlando2016 at 2015-04-29 19:49

hlubenow
 2015-05-03 21:37
#180921 #180921
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Was Du willst, ist nicht so ganz einfach, und Du bist leider noch sehr weit davon entfernt. Das kann man z.B. so machen:
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
#!/usr/bin/perl

use warnings;
use strict;

my $infile;
my $outfile;
my $i;
my $u;

open($infile, '<', 'Beispiel_Liste.txt') or die "$!";
my @a = <$infile>;
close($infile);

my @b = ();
my %h;

foreach $i (@a) {
    chomp($i);
    if ($i eq "") {
        if ($#b >= 1 && $b[1] =~ /Geburtuhrzeit/) {
            $h{$b[0]} = [];
            foreach $u (1 .. $#b) {
                push($h{$b[0]}, $b[$u]);
            }
        }
        @b = ();
        next;
    }
    push(@b, $i);
}

my @k = sort(keys(%h));

open($outfile, ">", "Sortiert.txt") or die "$!";

foreach $i (@k) {
    print "$i\n";
    print $outfile "$i\n";
    my @harr = @{$h{$i}};
    foreach $u (@harr) {
        print "$u\n";
        print $outfile "$u\n";
    }
    print "\n";
    print $outfile "\n";
}
close($outfile);

Wenn die Eingabedatei sehr groß ist und Du sie also nicht insgesamt in ein Array lesen willst, müßte man zusätzlich noch mit dem Modul Tie::File arbeiten, aber das wäre vom Code her auch nicht viel anders (weil Tie::File ebenfalls als Ausgangspunkt ein Array liefert).

View full thread Regex ausdrücke und bestimmte Zeile machen Probleme