Usando nawk, ¿cómo sumar todos los números en $1
los campos $2
, y $3
?
8 6 2
7 3 5
1 9 4
Quiero que el resultado sea suma = 45
Respuesta1
nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3;} END { printf "%d\n", sum } ' a.in
Respuesta2
usando awk:
awk '{x+=$0;}END{print x}' RS="[ \n]" file
Esto funcionará independientemente del número de filas o columnas. Al utilizar el separador de registros (RS) como espacio o nueva línea, cada valor se divide en una línea separada y, por lo tanto, se puede agregar fácilmente.
Respuesta3
También puedes usar coreutils y bc:
<file head -c-1 | tr ' \n' '++'; echo) | bc
Si se deben omitir algunas columnas, por ejemplo, si la entrada es así:
A 8 6 2
B 7 3 5
C 1 9 4
cut
Puede seleccionar los deseados:
<file cut -d' ' -f2- | head -c-1 | tr ' \n' '++'; echo) | bc
Salida en ambos casos:
45