phoemur
(usa Debian)
Enviado em 19/08/2013 - 20:20h
O que eu entendi é que você quer adicionar a soma após cada bloco semelhante a esse do arquivo lista.txt:
Co-SR:N_D;-32,3234
LJ-SR:N_D;-32,6946
LJ-LR:N_D;-0,463281
Desta forma eu consegui assim:
Primeiro criaremos um novo arquivo lista_nova.txt com as legendas como você queria. Aqui coloquei a legenda como Soma=%bla , sendo que o %bla será substituido depois pelos numeros. Troque de acordo com o q vc quiser.
sed "/LJ-LR:/a\Soma=%bla" lista.txt > lista_nova.txt
Depois criaremos um arquivo somas.txt somando a cada 2 ocorrências de LJ, uma variante do comando que eu passei no post anterior:
LC_ALL=pt_BR awk --use-lc-numeric -F';' '/^LJ/ {n+=$2} (NR%3)==0{print n; n=0;}' lista.txt > somas.txt
E agora o pulo do gato, que é substituir os %bla pela linha correspondente do arquivo soma.
Aqui tive que utilizar o eval para expandir a variável. O eval é um comando bastante incompreendido do linux.
cat somas.txt | while read LINE; do eval "sed -i '0,/%bla/s//$LINE/' lista_nova.txt"; done
Pelo menos no trecho de arquivo que você passou funcionou direito... O arquivo lista_nova.txt já vai estar com as somas inseridas nas linhas novas...
Aqui no meu ficou assim:
Co-SR:N_D;-32,3234
LJ-SR:N_D;-32,6946
LJ-LR:N_D;-0,463281
Soma=-33,1579
Co-SR:r_13;0
LJ-SR:r_13;0
LJ-LR:r_13;-0,01999
Soma=-0,01999
Co-SR:r_14;-0,000863515
LJ-SR:r_14;-0,00429348
LJ-LR:r_14;-0,0669857
Soma=-0,0712792
Co-SR:r_15;0
LJ-SR:r_15;0
LJ-LR:r_15;-0,0252353
Soma=-0,0252353
Dá um retorno aí se funcionou do jeito que você queria...
Aprendi bastante coisa hoje com esse seu problema viu....rs