Júlio, aproveitando o embalo =) Teria como dizer ao sed algo como "substitua as duas primeiras ocorrências", ou "substitua a terceira e quinta ocorrências"? Por exemplo, para substituir as duas primeiras eu concatenei dois comandos:
sed 's/#/*/; s/#/*/' Existe uma forma melhor de fazer isso? Abraços --- Em ter, 19/1/10, Julio C. Neves <julio.ne...@gmail.com> escreveu: De: Julio C. Neves <julio.ne...@gmail.com> Assunto: Re: [shell-script] Re: Alteração de campos individualmente. Para: shell-script@yahoogrupos.com.br Data: Terça-feira, 19 de Janeiro de 2010, 10:11 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...@gmail.com> > > > 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.barr...@...> 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.t...@...> > > > > > > > > > > > > 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] ------------------------------------ --------------------------------------------------------------------- Esta lista não admite a abordagem de outras liguagens de programação, como perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio aviso. --------------------------------------------------------------------- Sair da lista: shell-script-unsubscr...@yahoogrupos.com.br --------------------------------------------------------------------- Esta lista é moderada de acordo com o previsto em http://www.listas-discussao.cjb.net --------------------------------------------------------------------- Servidor Newsgroup da lista: news.gmane.org Grupo: gmane.org.user-groups.programming.shell.brazil Links do Yahoo! Grupos ____________________________________________________________________________________ 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]