Vamos a um exemplo mais claro: #### space 1 observables energy au -17109.649529926 1.0 end shift -1605.7 ####
Estas linhas se repetem em vários pontos do arquivo. O que preciso é somar (ou subtrair) um número a '-17109.649529926' e o resultado desta operação colocar no lugar de '-17109.649529926'. Só que preciso fazer isto para todos os primeiros valores da linha abaixo da expressão 'energy au'. O valor somado ou subtraido é mesmo. Por exemplo, desejo somar 1500 a todos os valores indicados no arquivo. Obrigado! Emiliano --- Em [email protected], "Emiliano Chemello" <[EMAIL PROTECTED]> escreveu > > Olá, > > O arquivo tem vários valores desejados, todos abaixo da > expressão 'energy au'. Só o primeiro valor da linha abaixo da > expressão interessa modificar, o segundo valor, que é sempre '1.0' > deve continuar lá. > > Preciso que o primeiro valor da linha abaixo da expressão 'energy au' > tenha seu valor alterado por uma soma ou subtração de um número > (sempre o mesmo número). Preciso somar ou subtrair números decimais. > O resultado desta soma deve substituir o valor original. > > Desde já agradeço! > Um abraço! > > Emiliano > > > --- Em [email protected], "mop" > <mop2bky4mz5tyjwa8ersp7hrg5u9qn@> escreveu > > > > Rabiscando uma função rápida, apelando para o programa bc e > considerando que: > > - somente a primeira linha que sucede cada campo chave é calculada > > - so um campo chave é informado por vez > > - uma única constante é adicionada, devendo seu sinal ser informado > > - não entendi bem a linha numérica... :p > > > > #-------------- > > add(){ > > P=;[ -${1:0:1} = -- -o +${1:0:1} = ++ ]&&\ > > while read;do > > [ $P ]&&{ P= > > REPLY="`echo ${REPLY%% *}$1|bc` ${REPLY#* }" > > } > > [ "$REPLY" == "$2" ]&&P=1 > > echo "$REPLY" > > done<file||echo error > > } > > add -12.123 "energy au" > > add +3.123 "energy au" > > #------------------- > > > > Como recomendo de praxe, cole na linha de comando de um usuário > miserável e > > mande ver. > > A função fica disponível, assim pode testar seus próprios valores. > > > > Não esqueça de fazer um link file para seu arquivo, ou acerte o nome > > na função. Se ele for variável pode ser inserido como parâmetro 3. > > A saída é em tela, para arquivo basta acrescentar na linha de > comando: > > > > add ..... >arq.test > > > > Cuidado com os bugs, mas deve servir para algo... :) > > >
