Somar colunas de arquivos diferentes com a mesma extensão (.dat) [RESOLVIDO]

1. Somar colunas de arquivos diferentes com a mesma extensão (.dat) [RESOLVIDO]

Elder Augusto Viana Mota
EAVMota

(usa Ubuntu)

Enviado em 26/10/2020 - 18:51h

Olá meus caros, boa noite!
Eu gostaria de fazer um shell que somasse uma determinada coluna de vários arquivos coma a mesma extensão ".dat". Segue abaixo uma parte do arquivo:

"# Energy spin 1 spin2
#
-11.9999872 0.00000000
-11.9953190 0.00000002
-11.9906507 0.00000005
-11.9859825 0.00000014
-11.9813143 0.00000037
-11.9766461 0.00000091
-11.9719779 0.00000216
. .
. .
. . "
Eu gostaria de somar os valores dessa segunda coluna do "aqruivo1.dat", com do "aqruivo2.dat", "aqruivo3.dat", ..., e assim sucessivamente. Gerando um arquivo final composto da primeira coluna (que é fixa para todos os arquivos) com a coluna correspondente a soma ao lado. Como deveria proceder?
Desde já agradeço!


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/10/2020 - 20:39h

EAVMota escreveu:

Olá meus caros, boa noite!
Eu gostaria de fazer um shell que somasse uma determinada coluna de vários arquivos coma a mesma extensão ".dat". Segue abaixo uma parte do arquivo:

"# Energy spin 1 spin2 #
-11.9999872 0.00000000
-11.9953190 0.00000002
-11.9906507 0.00000005
-11.9859825 0.00000014
-11.9813143 0.00000037
-11.9766461 0.00000091
-11.9719779 0.00000216
. .
. .
. . "
Eu gostaria de somar os valores dessa segunda coluna do "aqruivo1.dat",
com do "aqruivo2.dat", "aqruivo3.dat", ..., e assim sucessivamente.
Gerando um arquivo final composto da primeira coluna (que é fixa para todos os arquivos) com a coluna correspondente a soma ao lado. Como deveria proceder?
Desde já agradeço!


Boa noite EAVMota,
O exemplo abaixo, mostra as linhas de todos arquivos, com a soma....
Leia sobre NR, FNR , ARGC e ARGV.
awk '{soma+=$2;printf "%s %.8f\n" ,$1,soma}' arq-01 arq-02 arq-03 

EDITADO RESULTADO FINAL:
ARQS="*.dat"
awk 'FNR>1 {soma+=$2;if(FILENAME==ARGV[(ARGC-1)]) printf "%s %.8f\n" ,$1,soma}' ${ARQS}


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________


3. Re: Somar colunas de arquivos diferentes com a mesma extensão (.dat) [RESOLVIDO]

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 26/10/2020 - 20:02h

EAVMota escreveu:

Olá meus caros, boa noite!
Eu gostaria de fazer um shell que somasse uma determinada coluna de vários arquivos coma a mesma extensão ".dat". Segue abaixo uma parte do arquivo:

"# Energy spin 1 spin2
#
-11.9999872 0.00000000
-11.9953190 0.00000002
-11.9906507 0.00000005
-11.9859825 0.00000014
-11.9813143 0.00000037
-11.9766461 0.00000091
-11.9719779 0.00000216
. .
. .
. . "
Eu gostaria de somar os valores dessa segunda coluna do "aqruivo1.dat", com do "aqruivo2.dat", "aqruivo3.dat", ..., e assim sucessivamente. Gerando um arquivo final composto da primeira coluna (que é fixa para todos os arquivos) com a coluna correspondente a soma ao lado. Como deveria proceder?
Desde já agradeço!

A primeira coluna tem os mesmos valores em todos os arquivos? Ou cada arquivo tem números diferentes na 1a coluna?



4. Re: Somar colunas de arquivos diferentes com a mesma extensão (.dat) [RESOLVIDO]

Elder Augusto Viana Mota
EAVMota

(usa Ubuntu)

Enviado em 26/10/2020 - 20:31h

Isso mesmo!
O que eu quero é somar os valores da segunda coluna de cada arquivo. Pegar o primeiro elemento da segunda coluna do arquivo1.txt e somar com os correspondentes dos arquivo2.txt, arquivo3.txt, ..., e fazer isso para todos os elementos da segunda coluna.
O padrão que encontrei foi que a coluna tá localizada na segunda linha abaixo da sentença "# Energy spin 1 spin2", para todos os arquivos.