Soma da fonte de texto delimitada por espaço em branco

0

Como obter a soma de cada coluna do arquivo como:

123  32  122
43   11  0
444  112 32

e dê o resultado como:

610 155 154

em um comando simples?

Deve ser fácil no Perl, mas gostaria de saber se alguém já o empacotou no repositório do universo ou em outro lugar, junto com outros utilitários relacionados a tabelas de texto.

    
por Xiè Jìléi 04.06.2011 / 04:05

3 respostas

1

Isso deve funcionar:

cat foo | awk '{ SUM += $1; SUM1 += $2; SUM3 += $3} END { print SUM, SUM1, SUM3 }'

    
por theTuxRacer 04.06.2011 / 04:17
1

o awk é legal para esses tipos de tarefas

awk '{for (i=1; i<=NF; ++i) sum[i]+=$i} END {for (i=1; i<=NF; ++i) printf "%3d ", sum[i]; printf "\n"}' filename
    
por geirha 20.03.2012 / 12:36
0

Em python:

reduce(lambda x, y: \
  map(lambda pair: pair[0] + pair[1], zip(x, y)), \
  [map(int, n.split()) for n in file("foo", "r").read().splitlines()])

em que o número de colunas e o tamanho inteiro são limitados pela memória disponível.

    
por taneli 20.03.2012 / 12:20