paste File1 File2 | awk '{ print $1 + $2; }' > File3
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.
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
se ambos os campos estiverem na oitava coluna entre os 24
paste originalfile1 originalfile2 | awk '{print $8+$32 ; }' > file3
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
Tags csv shell-script