Thread In "grep" ZWEI Bedingungen erfüllen (23 answers)
Opened by Gast at 2007-04-20 16:56

PerlProfi
 2007-04-20 21:16
#76090 #76090
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Warscheinlich viel zu umständlich sollte folgendes dein gewünschtes Ergebnis erzielen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# get doubles
my %seen;
foreach my$key (@found) {
my @ele = split("\t", $key);
$seen{$ele[-1]} = [] unless $seen{$ele[-1]};
push(@{$seen{$ele[-1]}}, [$i, $ele[0]]);
}

# delete doubles
my $i = 0;
foreach my$key (keys %seen) {
if (@{$seen{$key}} > 1) {
# sort
my $top = $seen{$key}->[0];
foreach my$act (@{$seen{$key}})
{ if ($act->[1] > $top->[1]) { $top = $act } }

# splice
foreach my$act (@{$seen{$key}})
{ if ($act->[0] != $top->[0]) { splice(@found, $act->[0]-$i, 1); ++$i } }
}
}


MfG

View full thread In "grep" ZWEI Bedingungen erfüllen