help
Line | |
---|
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.