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

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

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


From: Fernando Luizao
Subject: Re: [shell-script] Re: Alteração de campos individualmente.
Date: Tue, 19 Jan 2010 05:34:30 -0800 (PST)

Acho que agora a saída está como vc quer:

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



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

do

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

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

done

Provavelmente dá pra simplificar os seds ;)

Abraços

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

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







 



  


    
      
      
      Oi Fernando,



Fiz o teste. Apenas a última linha casou:



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 *



De qualquer forma muito obrigado pelo seu tempo e disposição.



Assim que eu tiver a solução eu posto aqui.



[]s



--- Em shell-script@ yahoogrupos. com.br, Fernando Luizao <fernando_orse@ ...> 
escreveu

>

> 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@.. .> escreveu:

> 

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

> 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]