Grupo Unix Awk por

Grupo Unix Awk por

¿Alguien puede aclararme cómo agrupar según el nombre de usuario y sumar los valores, dividirlos por el número de filas de ese nombre de usuario específico? por ejemplo a continuación.

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

Mi salida debería ser la siguiente.

root 40 oracle 35 batch 30 griduser 20 xuser 45 admin 60

Gracias de antemano

Respuesta1

Si no le importa el orden de salida:

$ 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 

información relacionada