56 lines
1.1 KiB
Perl
56 lines
1.1 KiB
Perl
#!/usr/bin/perl
|
|
|
|
# Usuwa zbędne powtórzenia scieżek
|
|
|
|
use locale;
|
|
|
|
#if (@ARGV < 1) {
|
|
# print "USAGE: remDup.pl num\n\tGdzie \"num\" jest ilością powtórzeń, które zostawiamy\n";
|
|
# exit(0);
|
|
#}
|
|
|
|
|
|
|
|
#ilość powtórzeń, które zostawiamy
|
|
$max = 10;
|
|
|
|
# przyjmujemy, ze na wejściu znajduje się plik posortowany,
|
|
# po końcówkach oraz po prawdopodobieństwie
|
|
|
|
$line = <>;
|
|
|
|
while (($line !~ m/^$/) || ($line =~ m/^\n$/)) {
|
|
|
|
$count = 0;
|
|
|
|
while ($line =~ m/^\n$/) {
|
|
$line = <>;
|
|
}
|
|
|
|
$line =~ /^([^~]+)~.*/;
|
|
$theEnd = $1;
|
|
$end = $1;
|
|
|
|
while (($end =~ m/$theEnd/) && ($count++ < $max)) {
|
|
print $line;
|
|
$line = <>;
|
|
$line =~ /^([^~]+)~.*/;
|
|
$end = $1;
|
|
}
|
|
|
|
# tutaj mamy dwie możliwości:
|
|
# 1. wypisaliśmy już max lini - musimy wywalić kolejne linie, które
|
|
# zawierają końcówkę theEnd,
|
|
# 2. pasujących lini było mniej niż max, wtedy nic nie musimy robić
|
|
# - w zmiennej line znajduje się kolejna linia...
|
|
|
|
if ($count == $max + 1) {
|
|
while ($oldEnd =~ m/$theEnd/) {
|
|
$line = <>;
|
|
$line =~ /^([^~]+)~.*/;
|
|
$oldEnd = $1;
|
|
}
|
|
}
|
|
|
|
}
|