nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3;} END { printf "%d\n", sum } ' a.in
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
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.
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