usando nawk, como somar todos os números nos campos $1, $2 e $3?

usando nawk, como somar todos os números nos campos $1, $2 e $3?

Usando o nawk, como somar todos os números nos $1campos $2, e $3?

8     6     2

7     3     5

1     9     4

Quero que o resultado seja soma = 45

Responder1

nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3;} END { printf "%d\n", sum } ' a.in

Responder2

usando awk:

awk '{x+=$0;}END{print x}' RS="[ \n]"  file

Isso funcionará independentemente do número de linhas ou colunas. Ao usar o separador de registros (RS) como espaço ou nova linha, cada valor é dividido em uma linha separada e, portanto, pode ser facilmente adicionado.

Responder3

Você também pode usar coreutils e bc:

<file head -c-1 | tr ' \n' '++'; echo) | bc

Se algumas colunas devem ser omitidas, por exemplo, se a entrada for assim:

A 8 6 2
B 7 3 5
C 1 9 4

cutpode selecionar os desejados:

<file cut -d' ' -f2- | head -c-1 | tr ' \n' '++'; echo) | bc

Saída em ambos os casos:

45

informação relacionada