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

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

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


From: Marcio Gil
Subject: RE: [shell-script] Alteração de campos individualmente.
Date: Mon, 18 Jan 2010 17:58:28 -0200

Creio que isto resolva:

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

$ echo $a
#Teste# de #script#. Teste de #script2#. #Ultimo# teste de #script3#

$ echo $a | sed 's/^\(\([^#]*\#\)\{1\}\)\([^#]*\)/\1\*/;s/\#//g'
* de script. Teste de script2. Ultimo teste de script3

$ echo $a | sed 's/^\(\([^#]*\#\)\{3\}\)\([^#]*\)/\1\*/;s/\#//g'
Teste de *. Teste de script2. Ultimo teste de script3

$ echo $a | sed 's/^\(\([^#]*\#\)\{5\}\)\([^#]*\)/\1\*/;s/\#//g'
Teste de script. Teste de *. Ultimo teste de script3

$ echo $a | sed 's/^\(\([^#]*\#\)\{7\}\)\([^#]*\)/\1\*/;s/\#//g'
Teste de script. Teste de script2. * teste de script3

$ echo $a | sed 's/^\(\([^#]*\#\)\{9\}\)\([^#]*\)/\1\*/;s/\#//g'
Teste de script. Teste de script2. Ultimo teste de *

Observe que o que muda é o número ímpar entre as chaves: \{n\}

> -----Original Message-----
> From: Cléoson Barreto
> 
> 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 <address@hidden>
> 
> >
> >
> > 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á.
> >
> 
> 



reply via email to

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