61 lines
1.7 KiB
Perl
Executable File
61 lines
1.7 KiB
Perl
Executable File
#! /usr/bin/perl
|
|
|
|
use locale;
|
|
use strict;
|
|
|
|
if (@ARGV < 3) {
|
|
print "USAGE: cut_prefs.pl CUT_OFF TOTAL_PER ABS_CUT\n\n";
|
|
print "Obcina wpisy mało ważne, opis nie jest uwzględniany\n";
|
|
print "jeżeli zachodzi jeden z warunków:\n";
|
|
print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
|
|
print " od \$CUT_OFF*(liczba wystapien poprzedniego opisu)\n";
|
|
print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
|
|
print " od \$TOTAL_PER*(suma wszystkich wystapien)\n";
|
|
print " - jezeli liczba wystapien danego opisu jest mniejsza\n";
|
|
print " od \$ABS_CUT\n";
|
|
exit;
|
|
}
|
|
|
|
# jezeli liczba wystapien danego opisu jest mniejsza
|
|
# od $CUT_OFF*(liczba wystapien poprzedniego opisu) - opis nie jest uwzgledniany
|
|
my $CUT_OFF = shift;
|
|
|
|
# jezeli liczba wystapien danego opisu jest mniejsza
|
|
# od $TOTAL_PER*(suma wszystkich wystapien) - opis nie jest uwzgledniany
|
|
my $TOTAL_PER = shift;
|
|
|
|
# jezeli liczba wystapien danego opisu jest mniejsza
|
|
# od $ABS_CUT - opis nie jest uwzgledniany
|
|
my $ABS_CUT = shift;
|
|
|
|
my $pref = "";
|
|
my $oldPref = " ";
|
|
my $countTotal = -1;
|
|
my $count = -1;
|
|
|
|
while (<>) {
|
|
|
|
if (($count == -1) && ($_ =~ /^$oldPref\t.*/)) {
|
|
next;
|
|
}
|
|
|
|
if ($pref =~ //) {
|
|
$_ =~ /^(\w+)\t.+\t(\d+)\t(\d+)/;
|
|
$pref = $1;
|
|
$count = $2;
|
|
$countTotal = $3;
|
|
# print "\$pref=$pref\t\$count=$count\t\$countTotal=$countTotal\n";
|
|
}
|
|
$_ =~ /\w+\t.+\t(\d+)\t\d+/;
|
|
my $c = $1;
|
|
# print "\$c=$c\t\$CUT_OFF*\$count=$CUT_OFF*$count\t\$TOTAL_PER*\$countTotal=".$TOTAL_PER*$countTotal."\n";
|
|
if (($CUT_OFF*$count < $c) && ($TOTAL_PER*$countTotal < $c) && ($ABS_CUT < $c)) {
|
|
$count = $c;
|
|
print $_;
|
|
} else {
|
|
$count = -1;
|
|
$oldPref = $pref;
|
|
$pref = "";
|
|
}
|
|
}
|