Ler arquivos de um diretorio e somar

1. Ler arquivos de um diretorio e somar

LINER DE SOUZA SANTOS
linersantos

(usa Ubuntu)

Enviado em 06/05/2020 - 21:21h

Boa noite.
Tenho 100 arquivos que sao matrizes de dados numéricos. Preciso escrever um código que leia todos esses arquivos e calcule a soma dessas matrizes.
E.g.
arquivo "0.dat":
0 0 0 0
1 3 5 6
9 8 1 0

arquivo "1.dat":
1 1 1 1
3 2 5 4
0 0 0 0
1 4 5 6

quero que o arquivo de saida seja:
"resultado.dat"
1 1 1 1
4 5 10 10
1 3 5 6
10 12 6 6

Tentei escrever um codigo mas ele nao esta lendo. Vou enviar em anexo.


  


2. Re: Ler arquivos de um diretorio e somar

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 09/05/2020 - 10:22h

Testa aí:
awk '{for (i=1;i<=NF;i++) total[FNR","i]+=$i;} END{for (j=1;j<=FNR;j++) {for (i=1;i<=NF;i++) printf "%3i ",total[j","i]; print "";}}' 0.dat 1.dat >resultado.dat 




3. Re: Ler arquivos de um diretorio e somar

LINER DE SOUZA SANTOS
linersantos

(usa Ubuntu)

Enviado em 09/05/2020 - 13:42h

Valeu cara. Deu certo mas ainda falta 3 detalhes que se vc puder me ajudar tb vai me salvar rsrs
1. os dados dos meus arquivos são "floats" e nao inteiros. Vc sabe como fazer para que o script leia os dados como floats ou double?
2. Na vdd o meu diretorio tem 1000 desses arquivos. Tem algum tipo de loop q faco pra ele ler um por um?
3. Se eu quiser fazer outra operacao, como o produto do elemento da 1a matriz pelo elemento da 2a?
Valeu :)


4. Re: Ler arquivos de um diretorio e somar

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 09/05/2020 - 22:10h

linersantos escreveu:

Boa noite.
Tenho 100 arquivos que sao matrizes de dados numéricos. Preciso escrever um código que leia todos esses arquivos e calcule a soma dessas matrizes.
E.g.
arquivo "0.dat":
0 0 0 0
1 3 5 6
9 8 1 0

arquivo "1.dat":
1 1 1 1
3 2 5 4
0 0 0 0
1 4 5 6

quero que o arquivo de saida seja:
"resultado.dat"
1 1 1 1
4 5 10 10
1 3 5 6
10 12 6 6

Tentei escrever um código mas ele não esta lendo. Vou enviar em anexo.

Boa noite linersantos.
Segue Sugestão:
paste -d ' ' arq1 arq2|awk '{printf "%.2f %.2f %.2f %.2f\n" ,($1+$5),($2+$6),($3+$7),($4+$8)}'
Outra opção:
nl=$(awk 'NR==1 {print NF}' arq1)
paste -d ' ' arq1 arq2|awk '{for(n=1;n<='$nl';n++) printf "%.2f " ,($n+$(n+'$nl'));printf "\n"}'


Ps.: Para mudar a "operação", é só alterar o sinal.
Quanto ao looping para "pegar" os arquivos.... Os nomes dos arquivos, seguem a ordem ( Numérica) crescente?
Tipo,
0.dat, 1.dat, 2.dat, 3.dat, 4.dat.....
Se tiver nessa ordem....

for N in $(seq 0 2 Num_do_Ult_Arq_menos_Um);do
arq1="${N}.dat" arq2="$((N+1)).dat";
echo Arqs: $arq1 $arq2;
nl=$(awk 'NR==1 {print NF}' ${arq1});
paste -d ' ' ${arq1} ${arq2}|awk '{for(n=1;n<='$nl';n++) printf "%.2f " ,($n+$(n+'$nl'));printf "\n"}'
done


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


5. Re: Ler arquivos de um diretorio e somar

LINER DE SOUZA SANTOS
linersantos

(usa Ubuntu)

Enviado em 10/05/2020 - 00:30h

Cara, valeu pela ajuda :)
Mas na vdd oq eu preciso eh q o script calcule a soma total e grave esse resultado num arquivo sabe...
tipo resultado.dat seria o arquivo em que estaria a matriz resultante da soma de todas.


6. Re: Ler arquivos de um diretorio e somar

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 10/05/2020 - 01:01h

linersantos escreveu:

Cara, valeu pela ajuda :)
Mas na vdd oq eu preciso eh q o script calcule a soma total e grave esse resultado num arquivo sabe...
tipo resultado.dat seria o arquivo em que estaria a matriz resultante da soma de todas.

Liner, quanto a saída, é so direcionar, exemplo:
paste -d ' ' arq1 arq2|awk '{printf "%.2f %.2f %.2f %.2f\n" ,($1+$5),($2+$6),($3+$7),($4+$8)}' >> resultado.dat
A soma, não é linha a linha, campo a campo, de cada arquivo?


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


7. Re: Ler arquivos de um diretorio e somar

LINER DE SOUZA SANTOS
linersantos

(usa Ubuntu)

Enviado em 10/05/2020 - 02:58h

É linha a linha mas a resposta final eu precisaria q fosse a soma de todas e não duas a duas.
Mais uma vez valeu pela paciencia &#128516;






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts