[shell-script] Re: como delatar uma sequencia de palavras num arquivo de 436 linhas

2008-02-27 Por tôpico voyeg3r
eu usaria assim

 sed -i 's/File[0-9]\+=//g'

 File
 seguido de digitos de zero a nove → [0-9]
 uma vez ou mais →  \+
 seguido de um sinal de igualdade → =
 substituido por nada → //

/home/jgama/playlist/001 - Grande tu ‚s, ¢ Pai.mp3
/home/jgama/playlist/002 - Grandioso ‚ o nosso Deus.mp3
/home/jgama/playlist/003 - Alegrei-me quando me disseram.mp3
/home/jgama/playlist/004 - Grandioso ‚s tu.mp3
/home/jgama/playlist/005 - bom louvar ao Criador.mp3
/home/jgama/playlist/006 - O Senhor seja louvado.mp3
/home/jgama/playlist/007 - Bendito o rei que veio do ceu.mp3
/home/jgama/playlist/008 - Bendize, ¢ minha alma.mp3
/home/jgama/playlist/009 - A minha alma deseja ver-Te.mp3
/home/jgama/playlist/010 - Jesus habita em meu coracao.mp3




--- Em shell-script@yahoogrupos.com.br, "Tiago Barcellos Peczenyj"
<[EMAIL PROTECTED]> escreveu
>
> Alem do cut, vc poderia usar o sed
> 
> sed -i.old 's/^File[^=]*=//' arquivo

> 
> explicando:
> -i.old vai editar o proprio arquivo e criar um arquivo.old com o
> backup (como era a lista ANTES).
> ^File[^=]*= é uma expressão que diz "tudo o que começa com File, tem
> qualquer quantidade de caracteres diferente de =, seguido de ="
> logo,
> s/expressão// --> pega a expressão e troca por nada
> 
> a vantagem sobre o cut : edita o proprio arquivo.
> desvantagem: a expressão fica maior. o cut é bem sucinto.
> 
> alias assim tb funciona:
> 
> sed -i.old 's/^[^=]*=//' arquivo
> 
> qualquer coisa até um = vai ser cortada.
> 2008/2/26 Jose Valdir Gama <[EMAIL PROTECTED]>:
> >
> >
> > Na verdade eu tenho um arquivo com 450, mp3 igual este abaixo, e quero
> >  deletar todas as entradas que tenha Filexx= onde x é o número
> >
> >  File01=/home/jgama/playlist/001 - Grande tu ‚s, ¢ Pai.mp3
> >  File02=/home/jgama/playlist/002 - Grandioso ‚ o nosso Deus.mp3
> >  File03=/home/jgama/playlist/003 - Alegrei-me quando me disseram.mp3
> >  File04=/home/jgama/playlist/004 - Grandioso ‚s tu.mp3
> >  File05=/home/jgama/playlist/005 - bom louvar ao Criador.mp3
> >  File06=/home/jgama/playlist/006 - O Senhor seja louvado.mp3
> >  File07=/home/jgama/playlist/007 - Bendito o rei que veio do ceu.mp3
> >  File08=/home/jgama/playlist/008 - Bendize, ¢ minha alma.mp3
> >  File09=/home/jgama/playlist/009 - A minha alma deseja ver-Te.mp3
> >  File10=/home/jgama/playlist/010 - Jesus habita em meu coracao.mp3
> >
> >  Quero deixar assim
> >
> >  /home/jgama/playlist/001 - Grande tu ‚s, ¢ Pai.mp3
> >  /home/jgama/playlist/002 - Grandioso ‚ o nosso Deus.mp3
> >  /home/jgama/playlist/003 - Alegrei-me quando me disseram.mp3
> >  /home/jgama/playlist/004 - Grandioso ‚s tu.mp3
> >  /home/jgama/playlist/005 - bom louvar ao Criador.mp3
> >  /home/jgama/playlist/006 - O Senhor seja louvado.mp3
> >  /home/jgama/playlist/007 - Bendito o rei que veio do ceu.mp3
> >  /home/jgama/playlist/008 - Bendize, ¢ minha alma.mp3
> >  /home/jgama/playlist/009 - A minha alma deseja ver-Te.mp3
> >  /home/jgama/playlist/010 - Jesus habita em meu coracao.mp3
> >
> >  Qual a linha de comando que tenho que usar, sei que deve ser
facil para que
> >  manja em shel script e expressões.
> >
> >  Alguém pode ajudar?
> >
> >  Abraço
> >
> >  Valdir
> >
> >  --
> >  Sumare- SP
> >  jgamasystem - Linux a toda Prova
> >
> >  [As partes desta mensagem que não continham texto foram removidas]
> >
> >  
> 
> 
> 
> -- 
> Tiago B Peczenyj
> Linux User #405772
> 
> http://peczenyj.blogspot.com/
> "what does not kill us makes us stronger"
>




Re: [shell-script] Re: como delatar uma sequencia de palavras num arquivo de 436 linhas

2008-02-27 Por tôpico Tiago Barcellos Peczenyj
Também funciona, alias vc não precisa escapar o quantificador + se
utilizar a opção -r do sed

 -r, --regexp-extended
  use extended regular expressions in the script.

http://www.gnu.org/software/sed/manual/sed.html#Extended-regexps

essa opção é uma mão na roda para não ter q escapar 34237497689 coisas.

2008/2/27 voyeg3r <[EMAIL PROTECTED]>:
> eu usaria assim
>
>  sed -i 's/File[0-9]\+=//g'
>
-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


Re: [shell-script] visualizar o conteudo de um arquivo *.jar

2008-02-27 Por tôpico Tiago Barcellos Peczenyj
2008/2/27 Elvio Barbalho <[EMAIL PROTECTED]>:
>
>
>
>
>
>
> Senhores bom dia estou enfrentando o seguinte problema, em um script aki
>  tenho a necessidade de verificar o conteudo de um arquivo *.jar (java) e
> nao
>  estou conseguindo.
>
>  Ja tentei com o tar -tf [ arquivo.jar ]
>  gzip -l [ arquivo.jar ]
>  gzcat -l [ arquivo.jar ]
>
>  podem me ajudar!
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>  



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


[shell-script] visualizar o conteudo de um arquivo *.jar

2008-02-27 Por tôpico Elvio Barbalho
Senhores bom dia estou enfrentando o seguinte problema, em um script aki
tenho a necessidade de verificar o conteudo de um arquivo *.jar (java) e nao
estou conseguindo.

Ja tentei com o tar -tf [ arquivo.jar ]
gzip -l [ arquivo.jar ]
gzcat -l [ arquivo.jar ]


podem me ajudar!


[As partes desta mensagem que não continham texto foram removidas]



Re: [shell-script] visualizar o conteudo de um arquivo *.jar

2008-02-27 Por tôpico Tiago Barcellos Peczenyj
Desculpe, postei em branco :$

Elvio, tente usar o proprio comando jar -tvf ou o comando unzip

unzip -t arquivo.jar

um jar é um arquivo zip com outra extensão.


2008/2/27 Elvio Barbalho <[EMAIL PROTECTED]>:
>
>
> Senhores bom dia estou enfrentando o seguinte problema, em um script aki
>  tenho a necessidade de verificar o conteudo de um arquivo *.jar (java) e
> nao
>  estou conseguindo.
>
>  Ja tentei com o tar -tf [ arquivo.jar ]
>  gzip -l [ arquivo.jar ]
>  gzcat -l [ arquivo.jar ]
>
>  podem me ajudar!
>
>  [As partes desta mensagem que não continham texto foram removidas]
>
>  



-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


RES: [shell-script] Re: Obter buffer de saída E xpect

2008-02-27 Por tôpico Islenho de Almeida
Bom dia lista!

Consegui resolver meu problema de capturar em um arquivo local a saída de um 
comando remoto executado via expect.

A referência que me deu a dica, foi a seguinte:
http://www.linuxquestions.org/questions/programming-9/expectoutbuffer-is-not-capturing-all-output-from-a-cisco-ios-command-617388/

Alterei meu script expect, ficando assim:

#! /bin/expect -f
log_user 0
log_file -a  -noappend "listagem.txt"
  spawn ssh -l user host
  expect "Password:"
  send "abracadabra\r"

  send  "ls -l\r"
  expect {*#} {}
  send "logout\r"
log_file
wait
interact


Acho que é isso pessoal.

Muito obrigado a colaboração de todos!

Islenho

-Mensagem original-
De: shell-script@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de mop
Enviada em: terça-feira, 26 de fevereiro de 2008 14:53
Para: shell-script@yahoogrupos.com.br
Assunto: [shell-script] Re: Obter buffer de saída Expect


Não sei se funciona, posso estar cometendo um erro básico, mas o "instinto" me 
impeliria a tentar de imediato:

send "ls -l >>/tmp/myls\r"

PS. nao sei se o backslash (x0d) r da linha vai sobreviver no email, mas acho 
que a resposta é compreensível
--
>From: "Islenho de Almeida"
>
>Preciso acessar vários servidores e executar um "ls -l" em cada um 
>deles. O resultado eu devo guardar em um arquivo na máquina origem (na 
>máquina que executei o script com expect).
>
>send "ls -l\r"



-
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
-
Sair da lista: [EMAIL PROTECTED]
-
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
-
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

 


RES: [shell-script] visualizar o conteudo de um arquivo *.jar

2008-02-27 Por tôpico Islenho de Almeida
Como o Tiago falou, é um arquivo Zip.
 
Você pode verificar com o comanfo file. Ex:
$ file "./Aptana/Aptana Studio/jre/lib/deploy.jar"
./Aptana/Aptana Studio/jre/lib/deploy.jar: Zip archive data, at least v1.0 to 
extract
 
Islenho



De: shell-script@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Elvio 
Barbalho
Enviada em: quarta-feira, 27 de fevereiro de 2008 11:13
Para: shell-script@yahoogrupos.com.br
Assunto: [shell-script] visualizar o conteudo de um arquivo *.jar



Senhores bom dia estou enfrentando o seguinte problema, em um script aki
tenho a necessidade de verificar o conteudo de um arquivo *.jar (java) e nao
estou conseguindo.

Ja tentei com o tar -tf [ arquivo.jar ]
gzip -l [ arquivo.jar ]
gzcat -l [ arquivo.jar ]

podem me ajudar!

[As partes desta mensagem que não continham texto foram removidas]



 


RES: [shell-script] Obter buffer de saída Expect

2008-02-27 Por tôpico Islenho de Almeida
Já havia visto o logfile, porém está logando apenas o texto "Password".
 
#! /bin/expect -f
 
log_file  -noappend "listagem.txt"
  spawn ssh -l user serverN
  expect "Password:"
  send "abracadabra\r"

  send "ls -l\r"
  send_log "$expect_out(0,string)"
  send "logout\r"
log_file
 
interact

 
Vou continuar tentando, encontrando algo coloco aqui.
 
Obrigado!
Islenho



De: shell-script@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Tiago 
Barcellos Peczenyj
Enviada em: terça-feira, 26 de fevereiro de 2008 14:14
Para: shell-script@yahoogrupos.com.br
Assunto: Re: [shell-script] Obter buffer de saída Expect



Eu considero expect ON Topic pois é uma DSL que auxilia tarefas administrativas.

Vc pode usar o comando log_file "arquivo" dentro do script

De uma olhada no man do expect :)

2008/2/26 Islenho de Almeida <[EMAIL PROTECTED] 
 >:
>
> Pessoal,
>
> Estou com um problema com o expect. Fiquei sem saber se este assunto é OFF
> ou ON-Topic.
> Portanto, se for OFF-TOPIC, moderadores podem ripar esta msg direto. :)
>
> Preciso acessar vários servidores e executar um "ls -l" em cada um deles. O
> resultado eu devo guardar em um arquivo na máquina origem (na máquina que
> executei o script com expect).
>
> Tenho um início:
> #! /bin/expect -f
>
> spawn ssh -l user serverN
> expect "Password:"
> send "abracadabra\r"
>
> send "ls -l\r"
>
> send "logout\r"
>
> interact
>
>
> Preciso capturar o resultado do "ls -l". Procurei na lista e na net mas não
> encontrei uma informação muito clara. Vi até a thread "Problemas com EXPECT"
> aqui na lista mas não consegui obter a solução.
>
> Se os amigos puderem me ajudar, agradeço antecipadamente.
>
> Islenho
> 

-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/  
"what does not kill us makes us stronger"


 


[As partes desta mensagem que não continham texto foram removidas]



RES: [shell-script] Re: Obter buffer de saída E xpect

2008-02-27 Por tôpico Islenho de Almeida
Esta solução funciona de certa forma, pois o arquivo resultante será gerado no 
host remoto e não no host de onde eu executo o script.

Eu poderia até copiar depois para a origem, mas o problema é que são vários 
servidores e com shell bastante restrito por questões de segurança.

Islenho

-Mensagem original-
De: shell-script@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de mop
Enviada em: terça-feira, 26 de fevereiro de 2008 14:53
Para: shell-script@yahoogrupos.com.br
Assunto: [shell-script] Re: Obter buffer de saída Expect


Não sei se funciona, posso estar cometendo um erro básico, mas o "instinto" me 
impeliria a tentar de imediato:

send "ls -l >>/tmp/myls\r"

PS. nao sei se o backslash (x0d) r da linha vai sobreviver no email, mas acho 
que a resposta é compreensível
--
>From: "Islenho de Almeida"
>
>Preciso acessar vários servidores e executar um "ls -l" em cada um 
>deles. O resultado eu devo guardar em um arquivo na máquina origem (na 
>máquina que executei o script com expect).
>
>send "ls -l\r"



-
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
-
Sair da lista: [EMAIL PROTECTED]
-
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
-
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

 


[shell-script] Trocar ponto e virgula por ponto num mbox

2008-02-27 Por tôpico Elias Andrade
Pessoal,

Preciso trocar o cabeçalho "To:" das mensagens armazenada num 
servidor de email (formato mbox - O filtro anti-spam tmda "pira" quando 
o "To:" tem mais de um destinatário e o destintário é separado por ponto 
e virgula).

Uma solução simples e barroquina, mas que não poderá entrar em 
produção foi:

 cat 1204125597.31808.msg| sed s/';'/','/

Só que neste caso ele trocará no arquivo inteiro (putz, dae vai 
acabar alterando até o corpo do e-mail).


Como será que eu poderia fazer pra pegar somente o "To:" (ou seja, 
alterar somente a linha do cabeçalho e não do resto do arquivo)? Será 
que seria com o AWK?

Qualquer resposta é bem vinda.

Abraços,
  

-- 
[ ]'s
Elias Andrade
-
Certificado Conectiva | Linux User 229468
Projeto Monesa: http://monesa.sf.net
-
#Paranaguá - Paraná - [] Brasil
Ourinhos - São Paulo - [] Brasil
"Quando você perder, não perca a lição." -Dalai Lama



___ 
Yahoo! Mail - Sempre a melhor opção para você! 
Experimente já e veja as novidades. 
http://br.yahoo.com/mailbeta/tudonovo/
 




Re: [shell-script] Trocar ponto e virgula por ponto num mbox

2008-02-27 Por tôpico Ivan lopes
onde comecar com To: faca isto

use o sed mesmo com a opcao -i

procure aqui:

http://thobias.org/doc/sosed.html

ou

veja no aurelio.net

ou na pagina do Barcelos

os tres abordam esse topico.


Re: [shell-script] Trocar ponto e virgula por ponto num mbox

2008-02-27 Por tôpico Julio C. Neves
Se a linha começa por "To:", faça:

sed '/To:/s/;/,/g' arquivo

Confira o resultado. Se estiver correto, faça:

sed -i.old '/To:/s/;/,/g' arquivo

fazendo assim, "arquivo" ficará alterado e "arquivo.old" permanecerá intacto
para um possível roll back (mv arquivo.old arquivo)

Abraços,
Julio


Em 27/02/08, Elias Andrade <[EMAIL PROTECTED]> escreveu:
>
>   Pessoal,
>
> Preciso trocar o cabeçalho "To:" das mensagens armazenada num
> servidor de email (formato mbox - O filtro anti-spam tmda "pira" quando
> o "To:" tem mais de um destinatário e o destintário é separado por ponto
> e virgula).
>
> Uma solução simples e barroquina, mas que não poderá entrar em
> produção foi:
>
> cat 1204125597.31808.msg| sed s/';'/','/
>
> Só que neste caso ele trocará no arquivo inteiro (putz, dae vai
> acabar alterando até o corpo do e-mail).
>
> Como será que eu poderia fazer pra pegar somente o "To:" (ou seja,
> alterar somente a linha do cabeçalho e não do resto do arquivo)? Será
> que seria com o AWK?
>
> Qualquer resposta é bem vinda.
>
> Abraços,
>
>
> --
> [ ]'s
> Elias Andrade
> -
> Certificado Conectiva | Linux User 229468
> Projeto Monesa: http://monesa.sf.net
> -
> #Paranaguá - Paraná - [] Brasil
> Ourinhos - São Paulo - [] Brasil
> "Quando você perder, não perca a lição." -Dalai Lama
>
>
> ___
> Yahoo! Mail - Sempre a melhor opção para você!
> Experimente já e veja as novidades.
> http://br.yahoo.com/mailbeta/tudonovo/
>
>
> 
>



-- 
Abraços,
Julio


[As partes desta mensagem que não continham texto foram removidas]



[shell-script] Re: Operações de soma e subtra ção

2008-02-27 Por tôpico Emiliano Chemello
Olá Tiago,

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 shell-script@yahoogrupos.com.br, "Tiago Barcellos Peczenyj" 
<[EMAIL PROTECTED]> escreveu
>
> O Bash tem suporte a aritmética de inteiros.
> 
> Para obter aritmética de ponto flutuante terias que utilizar o bc 
ou awk
> 
> Isso que vc falou parece ser um caso para AWK mas faltam informações
> para eu te passar um script completo.
> 
> 2008/2/26 Emiliano Chemello <[EMAIL PROTECTED]>:
> >
> >
> >
> >
> >
> >
> > Olá Pessoal, tudo bem?
> >
> >  Estou com dificuldades em criar um shell script que faça o 
seguinte:
> >
> >  Localize um número logo abaixo de uma sentença chave:
> >  Ex:
> >  #
> >  energy au
> >  -109.649529926 1.0
> >  #
> >  Neste caso, desejo localizar o número "-109.649529926"
> >
> >  Depois de localizá-lo, preciso conseguir somar (ou subtrair) um
> >  número deste valor e colocar o resultado no lugar destes número
> >  inicial. O problema é que preciso fazer esta soma ou subtração 
para
> >  vários valores dentro de um mesmo arquivo.
> >
> >  Alguém poderia me ajuda?
> >
> >  Obrigado! Emiliano
> >
> >  
> 
> 
> 
> -- 
> Tiago B Peczenyj
> Linux User #405772
> 
> http://peczenyj.blogspot.com/
> "what does not kill us makes us stronger"
>




[shell-script] Re: Operações de soma e subtra ção

2008-02-27 Por tôpico Emiliano Chemello
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 shell-script@yahoogrupos.com.br, "mop" 
<[EMAIL PROTECTED]> 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 }
> 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... :)
>




[shell-script] Re: Operações de soma e subtra ção

2008-02-27 Por tôpico Emiliano Chemello
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 shell-script@yahoogrupos.com.br, "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 shell-script@yahoogrupos.com.br, "mop" 
>  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 > }
> > 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... :)
> >
>