vanessamenezes
(usa Ubuntu)
Enviado em 22/05/2015 - 11:05h
Bom dia caros,
preciso de uma ajuda. Tenho 3 arquivos txt com duas colunas de informações. A primeira é o número do canal e a segunda é a informação do sinal em cada canal (saída de sinal de eletrônica). Eu quero somar canal por canal correspondente de cada arquivo em uma saída de sinal total naquele correspondente canal. Exemplo.
arq1.txt arq2.txt arq3.txt
0 0.1234 0 0.1532 0 0.4032
1 1.2360 1 1.7890 1 0.6531
2 5.7865 2 1.4586 2 0.9332
3 5.7865 3 1.2360 3 0.6542
.
:
:
768 xxxxxx ........
0 xxxxxx .............
1 xxxxxx .............
2 xxxxxx ...........
3
Logo quero um arquivo de saída
arqsoma.txt
0 0.6798
1 3.6781
2 8.1783
3 7.6767
.
.
.
Os arquivos são muito grandes (mais de 10^6 linhas). A cada 768 canais se repetem novos 768 canais. Uma leitura que faça loops não é uma boa saída para esses arquivos tão grandes, pois o processo demora muito. Existe um meio de fazer com que a leitura seja mais rápida e a soma seja linha por linha correspondente.
Tentei
j=$((nlines+1)); ### número de linhas do arquivo
for ((i=1; i <= j ; i++)) do
sig_muon=$(cat sinalrecl_muon_$raio | head -$i | tail -1) ////aloca na variável o valor da linha i do arq1
sig_eletron=$(cat sinalrecl_eletr_$raio | head -$i | tail -1) ////aloca na variável o valor da linha i do arq2
sig_hadron=$(cat sinalrecl_hadron_$raio | head -$i | tail -1) ////aloca na variável o valor da linha i do arq3
sig_total=$(bc <<< $sig_muon+$sig_eletron+$sig_hadron)
echo "$i $sig_total" >> saida_sinalrecl_total_$raio
#done
Entretanto o arquivo tem duas colunas. Como pegar a informação apenas da segunda coluna.
Ficarei muito agradecida com qualquer ajuda.
Obrigada!