Rev | Line | |
---|
[f1563c0] | 1 | #! /usr/bin/perl |
---|
| 2 | |
---|
| 3 | use locale; |
---|
| 4 | use strict; |
---|
| 5 | |
---|
| 6 | if (@ARGV < 3) { |
---|
| 7 | print "USAGE: cut_prefs.pl CUT_OFF TOTAL_PER ABS_CUT\n\n"; |
---|
| 8 | print "Obcina wpisy ma³o wa¿ne, opis nie jest uwzglêdniany\n"; |
---|
| 9 | print "je¿eli zachodzi jeden z warunków:\n"; |
---|
| 10 | print " - jezeli liczba wystapien danego opisu jest mniejsza\n"; |
---|
| 11 | print " od \$CUT_OFF*(liczba wystapien poprzedniego opisu)\n"; |
---|
| 12 | print " - jezeli liczba wystapien danego opisu jest mniejsza\n"; |
---|
| 13 | print " od \$TOTAL_PER*(suma wszystkich wystapien)\n"; |
---|
| 14 | print " - jezeli liczba wystapien danego opisu jest mniejsza\n"; |
---|
| 15 | print " od \$ABS_CUT\n"; |
---|
| 16 | exit; |
---|
| 17 | } |
---|
| 18 | |
---|
| 19 | # jezeli liczba wystapien danego opisu jest mniejsza |
---|
| 20 | # od $CUT_OFF*(liczba wystapien poprzedniego opisu) - opis nie jest uwzgledniany |
---|
| 21 | my $CUT_OFF = shift; |
---|
| 22 | |
---|
| 23 | # jezeli liczba wystapien danego opisu jest mniejsza |
---|
| 24 | # od $TOTAL_PER*(suma wszystkich wystapien) - opis nie jest uwzgledniany |
---|
| 25 | my $TOTAL_PER = shift; |
---|
| 26 | |
---|
| 27 | # jezeli liczba wystapien danego opisu jest mniejsza |
---|
| 28 | # od $ABS_CUT - opis nie jest uwzgledniany |
---|
| 29 | my $ABS_CUT = shift; |
---|
| 30 | |
---|
| 31 | my $pref = ""; |
---|
| 32 | my $oldPref = " "; |
---|
| 33 | my $countTotal = -1; |
---|
| 34 | my $count = -1; |
---|
| 35 | |
---|
| 36 | while (<>) { |
---|
| 37 | |
---|
| 38 | if (($count == -1) && ($_ =~ /^$oldPref\t.*/)) { |
---|
| 39 | next; |
---|
| 40 | } |
---|
| 41 | |
---|
| 42 | if ($pref =~ //) { |
---|
| 43 | $_ =~ /^(\w+)\t.+\t(\d+)\t(\d+)/; |
---|
| 44 | $pref = $1; |
---|
| 45 | $count = $2; |
---|
| 46 | $countTotal = $3; |
---|
| 47 | # print "\$pref=$pref\t\$count=$count\t\$countTotal=$countTotal\n"; |
---|
| 48 | } |
---|
| 49 | $_ =~ /\w+\t.+\t(\d+)\t\d+/; |
---|
| 50 | my $c = $1; |
---|
| 51 | # print "\$c=$c\t\$CUT_OFF*\$count=$CUT_OFF*$count\t\$TOTAL_PER*\$countTotal=".$TOTAL_PER*$countTotal."\n"; |
---|
| 52 | if (($CUT_OFF*$count < $c) && ($TOTAL_PER*$countTotal < $c) && ($ABS_CUT < $c)) { |
---|
| 53 | $count = $c; |
---|
| 54 | print $_; |
---|
| 55 | } else { |
---|
| 56 | $count = -1; |
---|
| 57 | $oldPref = $pref; |
---|
| 58 | $pref = ""; |
---|
| 59 | } |
---|
| 60 | } |
---|
Note: See
TracBrowser
for help on using the repository browser.