Reputation: 821
Is it possible to print like this may be using awk ?
input
t1 t2 t3 t4 tn
l1 0 0.1448 0.2295 0.2896 0.3362
l3 0.1395 0.1395 0.1395 0.1395 0.4421
l4 0.5779 0.138 0.09591 0.05014 0.138
output
t1 t2 t3 t4 tn max avg.of.rest
l1 0 0.1448 0.2295 0.2896 0.3362 0.3362 0.166
l3 0.1395 0.1395 0.1395 0.1395 0.4421 0.4421 0.140
l4 0.5779 0.138 0.09591 0.05014 0.138 0.5779 0.114
Upvotes: 0
Views: 53
Reputation: 204731
$ cat tst.awk
BEGIN { OFS="\t"; OFMT="%.3f" }
NR==1 {
print $0, "max", "avg.of.rest"
next
}
{
max = $2
for (i=3;i<=NF;i++) {
max = ($i > max ? $i : max)
}
tot = cnt = 0
for (i=2;i<=NF;i++) {
if ($i != max) {
tot += $i
cnt++
}
}
print $0, max, (cnt?tot/cnt:0)
}
$ awk -f tst.awk file
t1 t2 t3 t4 tn max avg.of.rest
l1 0 0.1448 0.2295 0.2896 0.3362 0.3362 0.166
l3 0.1395 0.1395 0.1395 0.1395 0.4421 0.4421 0.140
l4 0.5779 0.138 0.09591 0.05014 0.138 0.5779 0.106
Upvotes: 2