-
Notifications
You must be signed in to change notification settings - Fork 0
/
misura.sh
73 lines (64 loc) · 1.18 KB
/
misura.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash
# formattazione degli output di client e supervisor
# in modo da ottenere per entrambi un file di N righe
# composto da due colonne, ID e SECRET, di ogni client
grep "SECRET" $1 | cut -d' ' -f2,4 | sort >formcliout
grep "BASED" $2 | cut -d' ' -f3,5 | sort -k 2 >formsupout
# dichiarazione di array in cui salvare ID e SECRET veri e stimati
declare -a c0
declare -a c1
declare -a s0
declare -a s1
declare -a temp
# veri
i=0
while read -a temp
do
c0[$i]=${temp[0]}
c1[$i]=${temp[1]}
i=$[i + 1]
done <formcliout
c=$i
# stimati
i=0
while read -a temp
do
s1[$i]=${temp[0]}
s0[$i]=${temp[1]}
i=$[i + 1]
done <formsupout
s=$i
t=0
j=0
good=0
count=0
declare -a err
#stima
for(( i=0;i<$s;i++ ))
do
# se l'ID corrisponde
if [ "${s0[$i]}" = "${c0[$j]}" ]
then
# t = sec_stimato - sec_vero
t=$[${s1[$i]} - ${c1[$j]}]
# t = |t|
t=${t#-}
err[$i]=$t
# count è la sommatoria degli errori
count=$[count+t]
if [ "${err[$i]}" -le "25" ]
then
good=$[good + 1]
fi
j=$[j + 1]
else
i=$[i - 1]
j=$[j + 1]
fi
done
# percentuale di stime accettabili
p=$[good*100/c]
# errore medio
m=$[count/s]
echo "$good good estimations with $c clients running ($p%)"
echo "error mean: $m"