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

2

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

8     6     2

7     3     5

1     9     4

Eu quero que o resultado seja sum = 45

    
por Steve 31.10.2012 / 16:16

3 respostas

5

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

    
por 31.10.2012 / 16:37
5

usando o awk:

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

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

    
por 31.10.2012 / 16:38
0

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 é assim:

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

cut pode selecionar os procurados:

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

Saída nos dois casos:

45
    
por 31.10.2012 / 18:09

Tags