Grande Julio! Obrigado pela resposta. Até ontem eu tava seguindo a linha do AWK. Já tinha até solucionado, mas o código ficou tão MONSTRUOSO de feio e desarranjado que eu já tinha vergonha de postar. Vendo o seu então, aí é que comprova mesmo o que eu estava pensando! =)
De qualquer forma é bom frisar uma coisa: existem códigos e códigos. Quem sou eu para dizer algo, ainda mais na lista de shell-script (que por sinal eu acompanho desde o início), mas fica os 2 cents: Se o problema e a performance não for exigida, não se preocupe em perfumarias, resolva o problema. Nem que seja usando soluções lusitanas. =) Mas é claro que uma solução enxuta e concisa é sempre melhor. Diante do enorme apoio que recebi aqui, só tenho uma coisa a dizer: tentarei participar mais e ajudar os outros colegas e não apenas ficar lendo. Querendo ou não todos nós temos um pouquinho a contribuir. []s Zaq --- Em shell-script@yahoogrupos.com.br, "Julio C. Neves" <julio.ne...@...> escreveu > > 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 <zaq.t...@...> > > > > > > > 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 shell-script@yahoogrupos.com.br <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] >