Prezados, bom dia.
Utilizo o script abaixo para somar valores dispostos em uma mesma linha de diferentes colunas.
##########################################################################
#!/bin/bash
## Parametros a definir ####
tam=3 #número de colunas
############################
touch tmp
for i in *PDOS*
do
awk '{print $2}' $i > col-$i.dat2
paste tmp col-$i.dat2 > total.dat
cp total.dat tmp
rm *.dat2
done
rm tmp
awk '{x=0; i=1; do {x=x+$i; i++} while(i<=3); print x}' total.dat> TESTE_SOMA.dat
awk '{print $1}' *#1\(Cd\)_wfc#1\(s\)> energia.dat
paste energia.dat TESTE_SOMA.dat> TESTE_SOMA_FINAL.dat
##########################################################################
Uma amostra do conteúdo do arquivo designado por total.dat é a que se segue:
##########################################################################
E E E
0.667E-06 0.669E-07 0.578E-08
0.732E-06 0.738E-07 0.637E-08
0.804E-06 0.814E-07 0.703E-08
0.882E-06 0.896E-07 0.775E-08
0.968E-06 0.987E-07 0.854E-08
0.106E-05 0.109E-06 0.940E-08
0.116E-05 0.120E-06 0.104E-07
0.127E-05 0.132E-06 0.114E-07
0.140E-05 0.145E-06 0.125E-07
0.153E-05 0.159E-06 0.138E-07
0.167E-05 0.175E-06 0.152E-07
0.183E-05 0.192E-06 0.167E-07
##########################################################################
Para citar um exemplo: se meu arquivo tem 3 colunas e 5000 linhas, em cada uma delas somo o primeiro valor da primeira coluna com o primeiro valor da segunda coluna e o primeiro valor da terceira coluna. O procedimento é realizado para cada uma das linhas. Utilizo awk para realizar as tarefas. Este script sempre funcionou sem nenhum problema. Entretanto, na semana passada instalei o Ubuntu 20.04 no meu computador e o script parou de funcionar: a coluna da soma está sempre preenchida com zeros nos arquivos TESTE_SOMA.dat ou TESTE_SOMA_FINAL.dat. Minha esperança é que algum membro da comunidade consiga me ajudar com este problema. Agradeço a todos pela atenção.
Pergunta
Rls
Prezados, bom dia.
Utilizo o script abaixo para somar valores dispostos em uma mesma linha de diferentes colunas.
##########################################################################
#!/bin/bash
## Parametros a definir ####
tam=3 #número de colunas
############################
touch tmp
for i in *PDOS*
do
awk '{print $2}' $i > col-$i.dat2
paste tmp col-$i.dat2 > total.dat
cp total.dat tmp
rm *.dat2
done
rm tmp
awk '{x=0; i=1; do {x=x+$i; i++} while(i<=3); print x}' total.dat> TESTE_SOMA.dat
awk '{print $1}' *#1\(Cd\)_wfc#1\(s\)> energia.dat
paste energia.dat TESTE_SOMA.dat> TESTE_SOMA_FINAL.dat
##########################################################################
Uma amostra do conteúdo do arquivo designado por total.dat é a que se segue:
##########################################################################
E E E
0.667E-06 0.669E-07 0.578E-08
0.732E-06 0.738E-07 0.637E-08
0.804E-06 0.814E-07 0.703E-08
0.882E-06 0.896E-07 0.775E-08
0.968E-06 0.987E-07 0.854E-08
0.106E-05 0.109E-06 0.940E-08
0.116E-05 0.120E-06 0.104E-07
0.127E-05 0.132E-06 0.114E-07
0.140E-05 0.145E-06 0.125E-07
0.153E-05 0.159E-06 0.138E-07
0.167E-05 0.175E-06 0.152E-07
0.183E-05 0.192E-06 0.167E-07
##########################################################################
Para citar um exemplo: se meu arquivo tem 3 colunas e 5000 linhas, em cada uma delas somo o primeiro valor da primeira coluna com o primeiro valor da segunda coluna e o primeiro valor da terceira coluna. O procedimento é realizado para cada uma das linhas. Utilizo awk para realizar as tarefas. Este script sempre funcionou sem nenhum problema. Entretanto, na semana passada instalei o Ubuntu 20.04 no meu computador e o script parou de funcionar: a coluna da soma está sempre preenchida com zeros nos arquivos TESTE_SOMA.dat ou TESTE_SOMA_FINAL.dat. Minha esperança é que algum membro da comunidade consiga me ajudar com este problema. Agradeço a todos pela atenção.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.