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 shell-script@yahoogrupos.com.br, Fernando Luizao <fernando_o...@...> 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.t...@...> escreveu: > > De: mikoazul <zaq.t...@...> > Assunto: [shell-script] Re: Alteração de campos individualmente. > Para: shell-script@yahoogrupos.com.br > 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] >