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 <zaq.t...@gmail.com> > > > > > > > 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á. > > > >