utt/nawszelkiwypadek/tools/gue_dic/rmDup.pl

56 lines
1.1 KiB
Perl
Executable File

#!/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;
}
}
}