shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Alteração de campos individualmente.


From: Fernando Luizao
Subject: Re: [shell-script] Alteração de campos individualmente.
Date: Mon, 18 Jan 2010 11:34:38 -0800 (PST)

Desculpem o double post, só uma correção:

a='#Teste# de #script#. Teste de #script2#. #Ultimo# teste de #script3#'

while echo $a | grep '#' > /dev/null

do

    echo $a | sed 's/#[^#]*#/* /'

    a=`echo $a | sed 's/#//1; s/#//1'`
done # eu tinha colocado 'end'!

Agora eu testei, e está funcionando.

Abraço

--- Em seg, 18/1/10, Fernando Luizao <address@hidden> escreveu:

De: Fernando Luizao <address@hidden>
Assunto: Re: [shell-script] Alteração de campos individualmente.
Para: address@hidden
Data: Segunda-feira, 18 de Janeiro de 2010, 17:15







 



  


    
      
      
      Algumas idéias:



a='#Teste# de #script#. Teste de #script2#. #Ultimo# teste de #script3#'



Teste se a string contém '#', se não tiver, acabamos. Pode usar  isso em um 
laço:



echo $a | grep '#'



Substituindo a primeira ocorrência do que está entre '#' por '*'



echo $a | sed 's/#[^#]*#/* /'



Removendo as duas primeiras ocorrências do caracter '#'



a=`echo $a | sed 's/#//1; s/#//1'`



Juntando tudo isso acredito que resolva o problema =)



Um esboço (não testado):



while echo $a | grep '#' > /dev/null

do

    echo $a | sed 's/#[^#]*#/* /'

    a=`echo $a | sed 's/#//1; s/#//1'`

end



Abraço



--- Em seg, 18/1/10, mikoazul <zaq.tech@gmail. com> escreveu:



De: mikoazul <zaq.tech@gmail. com>

Assunto: [shell-script] Alteração de campos individualmente.

Para: shell-script@ yahoogrupos. com.br

Data: Segunda-feira, 18 de Janeiro de 2010, 14:36



 



Pessoal,



Tive que recorrer à lista pois meu caso está bem complicado (pelo menos pra 
mim). Já tentei alguns comandos sed e outros awk, mas não consigo resolver o 
impasse.



Estou tentando transformar o arquivo "ENTRADA" nas várias saídas demonstradas 
abaixo. 



A idéia é ir pegando cada campo entre "#" e substituí-lo com * (por exemplo). O 
detalhe é que em cada linha tem-se um resultado diferente. Ou seja, ele vai 
tratando o próximo campo e automaticamente "destratando" o anterior. Ou seja a 
idéia é tratar um campo por vez. 



Se tiver alguém inspirado hoje e que puder me ajudar eu agradeço desde já. 



Vamos aos detalhes:



Entrada:



#Teste# de #script#. Teste de #script2#. #Ultimo# teste de #script3#.



Saidas:



* de script. Teste de script2. Ultimo teste de script3.



Teste de *. Teste de script2. Ultimo teste de script3.



Teste de script. Teste de *. Ultimo teste de script3.



Teste de script. Teste de script2. * teste de script3.



Teste de script. Teste de script2. Ultimo teste de *.



Tentei com o sed e o máximo que consegui foi:



cat ENTRADA | sed 's/^\(\([^#] *#\)\{1,2\ }\)0*/*/'



Saída:



* de #script#. Teste de #script2#. #Ultimo# teste de #script3#.



Grato desde já.



____________ _________ _________ _________ _________ _________ _

Veja quais são os assuntos do momento no Yahoo! +Buscados

http://br.maisbusca dos.yahoo. com



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





    
     

    
    


 



  






      
____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]