Kann mir jemand erklären, wie ich nach Benutzernamen gruppiere und die Werte summiere und durch die Anzahl der Zeilen dieses bestimmten Benutzernamens dividiere, z. B. unten.
root 25 oracle 25 batch 30 griduser 20 admin 35
root 55 oracle 45 batch 30 griduser 10
oracle 35 batch 30 griduser 30 xuser 45 admin 85
Meine Ausgabe sollte wie folgt aussehen.
root 40 oracle 35 batch 30 griduser 20 xuser 45 admin 60
Dank im Voraus
Antwort1
Wenn Ihnen die Ausgabereihenfolge nichts ausmacht:
$ awk '{for(i=1;i<NF;i+=2){a[$i]+=$(i+1);b[$i]+=1}}
END {
for(i in a){
printf "%s %d ",i,a[i]/b[i]
}
printf "\n"
}' file
oracle 35 griduser 20 admin 60 root 40 xuser 45 batch 30