[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]
> >
>
Re: [shell-script] Alteração de campos individualmente., Fernando Luizao, 2010/01/18