GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo obtener la suma de los valores en la columna en función de las variables en otra columna por separado?

Esta pregunta ya tiene respuestas aquí :¿Cómo calcular la suma de los datos que tienen el mismo ID en la primera columna?

(4 respuestas)
Cerrado hace 2 años.

Tengo una tabla de datos como la siguiente

abc 1   1   1
bcd 2   2   4
bcd 12  23  3
cde 3   5   5
cde 3   4   5
cde 14  2   25

Quiero la suma de valores en cada columna según las variables en la primera columna y el resultado deseado es el siguiente:

abc 1   1   1
bcd 14  25  7
cde 20  11  35

Usé un comando awk como este

awk -F"\t" '{for(n=2;n<=NF; ++n)a[$1]+=$n}END{for(i in a ) print i, a[i] }' tablefilepath

y obtuve un resultado a continuación:

abc 3
bcd 46
cde 66

Creo que el final de mi código está mal, pero no sé cómo solucionarlo.
Necesito algunas instrucciones para corregir el código.

Respuesta aceptada:

Estabas bastante cerca.
Ves lo que estabas haciendo mal, ¿no?
Estabas guardando un total para cada valor de columna 1,
cuando deberías haber estado guardando tres.

Esto es similar a la respuesta de Inian,
pero trivialmente extensible para manejar cualquier número de columnas:

awk -F"\t" '{for(n=2;n<=NF; ++n) a[$1][n]+=$n}
        END {for(i in a) {
                printf "%s", i
                for (n=2; n<=4; ++n) printf "\t%s", a[i][n]
                printf "\n"
             }
        }'

En lugar de mantener tres matrices, como la respuesta de Inian,
mantiene una matriz bidimensional.


Linux
  1. ¿Cómo obtener la suma Md5 del contenido de un directorio como una sola suma?

  2. ¿Cómo hacer que Uuencode funcione?

  3. ¿Cómo obtener el ID de proceso del proceso en segundo plano?

  4. ¿Cómo ordenar un archivo, en función de sus valores numéricos para un campo?

  5. Cómo obtener el uso de la CPU

Cómo usar variables en Ansible Playbook

Cómo obtener información sobre otros usuarios de Linux

Cómo obtener su dirección IP en Linux

¿Cómo obtener un tipo de datos de variables en Zsh?

¿Cómo hacer que el reloj muestre la fecha?

¿Cómo obtener ps para imprimir grupo?