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