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: slackmonio
Subject: Re: Alteração de campos individualmente.
Date: Wed, 20 Jan 2010 05:53:27 -0000
User-agent: eGroups-EW/0.82

Curti d+ a solução do Fernando. Muito Bom!!

Aproveitando a dica do Julio + o script do Fernando:

Você pode obter uma das suas n saídas individualmente através dos índices do 
sed:

echo $a | sed -e 's/#[^#]#/1' -e 's/#//g' #1 ou nada ;)
* de script. Teste de script2. Ultimo teste de script3.

echo $a | sed -e 's/#[^#]#/2' -e 's/#//g'
Teste de *. Teste de script2. Ultimo teste de script3.

echo $a | sed -e 's/#[^#]#/5' -e 's/#//g'
Teste de script. Teste de script2. Ultimo teste de *.

t+

--- Em address@hidden, "mikoazul" <zaq.tech@...> escreveu
>
> 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]