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

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

Re: Alteração de campos individualmente.


From: mikoazul
Subject: Re: Alteração de campos individualmente.
Date: Tue, 19 Jan 2010 12:59:09 -0000
User-agent: eGroups-EW/0.82

Mestre Julio,

Testei aqui. Faltou um pequeno detalhe. O * tem que envolver a palavra. Na 
verdade ele teria que substitui-la. Vou ver se organizo aqui o "frankstein" e 
posto na lista.

[]s
Zaq

--- Em address@hidden, Fernando Luizao <fernando_orse@...> escreveu
>
> 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.neves@...> escreveu:
> 
> De: Julio C. Neves <julio.neves@...>
> Assunto: Re: [shell-script] Re: Alteração de campos individualmente.
> Para: address@hidden
> 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.tech@...>
> 
> >
> >
> > 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 address@hidden <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]
> 
> 
> 
> ------------------------------------
> 
> ---------------------------------------------------------------------
> 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: address@hidden
> ---------------------------------------------------------------------
> 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]
>




reply via email to

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