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

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

Re: Alteração de campos individualmente.


From: mikoazul
Subject: Re: Alteração de campos individualmente.
Date: Tue, 19 Jan 2010 15:11:37 -0000
User-agent: eGroups-EW/0.82

Dae Fernandão!

Os feras do sed também estão aqui! =)

Muito obrigado parceiro! Que solução elegante a sua. =)

Vou substituir minha solução Lusitana por ela.

Show de bola! Valeu mesmo.

[]s
Zaq

--- Em address@hidden, Fernando Luizao <fernando_orse@...> escreveu
>
> 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 <zaq.tech@...> escreveu:
> 
> De: mikoazul <zaq.tech@...>
> 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]