awk '{ for (i = 1; i <= NF; i++) sum[i]+=$i} END{for (i in sum) print sum[i]}' file1 > file2
Isso ajuda a somar todos os registros, mas um esquema semelhante não ajudaria a fazer uma soma em colunas (talvez). Como generalizar a adição em colunas para n colunas?
cat file1
23 46 45
45 57 58
56 78 74
cat file2
114
160
208
Você deseja calcular a soma dos campos para cada registro, então é apenas:
As chaves iniciam uma instrução de ação que é executada em cada linha da entrada; não há condição anterior que limite sua execução a linhas que satisfaçam tal condição .
Em cada linha:
sum
variável com zero.NF
), e incrementesum
pelo valor desse campo ($i
).sum
variável.Isso será um pouco mais lento que o awk, mas é muito conciso:
Ele usa a
sum0
função do módulo List::Util principal.