utt/nawszelkiwypadek/tools/gue_dic/cut_prefs.pl

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 = "";
}
}