Dear Fedora users,
I have a question regarding a set of data and an awk script that performs some
actions, it calculates a GF(goals in favor) GA(goals against), and PTS for each
game. Suppose the data is as follows:
Soccer.dat
Team. GF GA
Team1 1 2
Team2 1 1.2
Team3 2 4
Team4 3 0
Team5 4 0
Team6 3 2
Team7 1 3
Team8 2.01 2.03
Team9 3.03 3.04
Team10 0 7
Team11 0.1 0.3
In district play, if a team wins in regulation they earn 3 pts, if you lose 0
pts, if both teams tie in regulation, they play overtime, if they are still
tied then penalty kicks decide the outcome of the game. The winners in OT/PKS
get 2 pts, the loser get 1 pt.
In Team2 we tied at 1 in regulation, but in OT, the other team scored 2 goals
and beat us 3 to 1. The awk script attached inline calculates this, but
outputs 1 2 when it should output 1 3. If there is another number in the
hundredths place is we shot penalty kicks. I cannot copy the awk script. I
will have to attach it. I would like to improve it by tallying a running total
per column of GF GA PTS . Ideas are appreciated.
The awk script creates a new integer from the decimal number given. The
integer part and the fractional part are used to create the new numbers that
end up in GF and GA.
In one case when I put 1 1.2 the output should be 1 3 but it gives me 1 2.
This is one of my questions. On the other hand if I put 0.1 and 0.3 it outputs
1 to 3 correctly. Do I have a mistake in my function? I use int($1) to get
integer part and ($1-int($1)) to get fractional part.
Best Regards,
Antonio
#!bin/sh
# Check for arguments
if [ $# -eq 0 ]; then
echo "Usage: $(basename $0) filename"
exit 1
fi
if [ ! -f $1 ]; then
echo "File "$1" doesn't exist!"
exit 0
fi
awk '
NR == 1 {
f[1]=-14; f[2] = f[3] = f[4] = f[5] = 3
printf "%-14s %-3s %-3s %-3s %-3s\n",
"OPPONENT", "GF", "GA", "DIF", "PTS"
}
NR >= 1 {
F=$2+10*($2-int($2))-($2-int($2));
A=$3+10*($3-int($3))-($3-int($3));
tdif=F-A;
dif=$2-$3
difb=int($2)-int($3);
if (dif >= 1 && int(dif) >= 1)
pts=3;
else if (dif > 0 && int(difb) >= 0)
pts=2;
else if (dif > -1 && int(difb) >= -1)
pts=1;
else
pts=0;
printf "%-14s %-3d %-3d %-3d %-3d \n",
$1, F, A, tdif, pts }' $1
_______________________________________________
users mailing list -- users@lists.fedoraproject.org
To unsubscribe send an email to users-le...@lists.fedoraproject.org