Como somar valores de coluna para cada linha em dois arquivos csv usando o script bash?

2

Eu tenho dois arquivos CSV e tenho o requisito para calcular a soma da oitava coluna do Arquivo1 e Arquivo2 para cada linha. Os dois arquivos CSV têm exatamente 24 linhas cada e para simplificar as coisas que eu extraí a 8ª linha de cada arquivo CSV usando:

awk -F, '{ print $8 }' >> FILE1
awk -F, '{ print $8 }' >> FILE2

Agora, tenho 2 dados de arquivo no seguinte formato:

Arquivo1

1
2
3
4

Arquivo2

2
3
4
5

Como posso fazer os cálculos da maneira que

File1.Col1 + File2.Col1 = File3.Col1
File1.Col2 + File2.Col2 = File3.Col2
File1.Col3 + File2.Col3 = File3.Col3
.
.
.

resultando em:

File3

3
5
7
9

e assim por diante, usando o script Bash Shell porque o resto do meu processamento está sendo feito da mesma forma.

    
por Ankit Vashistha 05.08.2015 / 13:55

4 respostas

3

paste File1 File2 | awk '{ print $1 + $2; }' > File3

    
por 05.08.2015 / 14:19
0

para evitar um arquivo intermediário, use:

paste <( awk -F, '{ print $8 }' original_file1 ) <( awk -F, '{ print $8 }' original_file2 ) | awk '{print $1+$2}' > file3
    
por 05.08.2015 / 15:26
0

se ambos os campos estiverem na oitava coluna entre os 24

 paste originalfile1 originalfile2 | awk '{print $8+$32 ; }' > file3 
    
por 05.08.2015 / 15:40
0

Usando numsum e paste :

paste -d ' ' File[12] | numsum -r > File3

Ou se DataFile1 e DataFile2 forem os arquivos multi-colunas dos quais File1 e File2 foram extraídos:

paste -d ' ' <(cut -f 8 DataFile1) <(cut -f 8 DataFile2) | numsum -r > File3
    
por 16.04.2018 / 22:50