Crie um novo arquivo de texto com a soma da terceira coluna de vários outros

1

Eu tenho vários arquivos de texto diferentes no formato:

x y z

x y z

x y z

Eu quero criar um novo arquivo que some os valores z em cada um e, em seguida, tenha o valor somado no lugar de z , ou seja,

x y (z1+z2+z3+z4)

x y (z1+z2+z3+z4)

x y (z1+z2+z3+z4)

Como posso fazer isso a partir da linha de comando? Estou ciente de awk , mas não tenho certeza de como usá-lo para essa finalidade, ou se isso seria, de fato, o método mais eficiente.

    
por Dominic Rafferty 29.09.2015 / 02:57

1 resposta

0

Você poderia passar os arquivos concatenados para awk duas vezes, pela primeira vez ( NR==FNR ) para calcular a sum da terceira coluna ( $3 ) em todos os arquivos e pela segunda vez para substituir os valores existentes pela total:

awk 'NR==FNR{sum+=$3;next}; {$3=sum; print}' <(cat file1 file2...fileN) \
<(cat file1 file2...fileN) > result.txt
    
por 29.09.2015 / 04:20