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: Julio C. Neves
Subject: Re: [shell-script] Re: Alteração de campos individualmente.
Date: Tue, 19 Jan 2010 10:11:09 -0200

O sed tem uma facilidade que todos esquecem: no cmd 's', após a última
barra, podemos cologar o índice da substituição que desejamos fazer. Neste
campo, normalmente usamos 'g' para uma substituição global ou nada para
substituir somente a primeira ocorrência, mas acho que o que vc deseja é
isso:

$ for ((i=1;i<6;i++)); do sed "s/#/*/$i" <<< "#primeira primeira#segunda #
terceira # quarta#"; done
*primeira primeira#segunda # terceira # quarta#
#primeira primeira*segunda # terceira # quarta#
#primeira primeira#segunda * terceira # quarta#
#primeira primeira#segunda # terceira * quarta#
#primeira primeira#segunda # terceira # quarta*

Ou seria assim?

$ for ((i=1;i<6;i++)); do sed "s/#/*/$i;s/#/ /g" <<< "#primeira
primeira#segunda # terceira # quarta#"; done
*primeira primeira segunda   terceira   quarta
 primeira primeira*segunda   terceira   quarta
 primeira primeira segunda * terceira   quarta
 primeira primeira segunda   terceira * quarta
 primeira primeira segunda   terceira   quarta*

Abraços,
Julio
Cursos de Shell e Zenity em 2 fins de semana?
- Em SP ligue (11)2125-4747;
- Em DF ligue (61) 3223-3000;
- Turmas fechadas em outras cidades ligue (21) 8112-9988.



2010/1/18 mikoazul <address@hidden>

>
>
> Valeu brother!
>
> Segunda-feira é fogo. Junta férias e tudo mais, quando a gente volta o
> cérebro demora a pegar! =]
>
> Agora em casa com mais calma (e longe das pressões) eu vou tentar a solução
> com mais calma.
>
> Conseguindo algo eu posto aqui.
>
> Itiho: grande abraço meu amigo!
>
> []s
>
> --- Em address@hidden <shell-script%40yahoogrupos.com.br>,
> Cléoson Barreto <cleoson.barreto@...> escreveu
>
> >
> > Olá!
> >
> > Para a primeira saída acho que isso resolve:
> >
> > $ echo "#Teste# de #script#. Teste de #script2#. #Ultimo# teste de
> > #script3#" | sed 's/\#[^#]*#/\*/ ; s/#//g'
> >
> > * de script. Teste de script2. Ultimo teste de script3
> >
> > Ainda não consegui um resultado para as demais saídas, mas creio que
> > esse "one-liner" pode servir de inspiração. :-)
> >
> > --
> > []'s
> > Cléoson.
> > http://farinhadigital.blogspot.com/
> >
> >
> > 2010/1/18 mikoazul <zaq.tech@...>
>
> >
> > >
> > >
> > > 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á.
> > >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  
>


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



reply via email to

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