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

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

Re: [shell-script] Removento trechos de uma string


From: address@hidden
Subject: Re: [shell-script] Removento trechos de uma string
Date: Thu, 14 Sep 2006 01:50:25 -0300
User-agent: Thunderbird 1.5.0.5 (X11/20060719)

Valeu as dicas. Achei bem mais elegante a proposta do Flávio, com o sed. Já a adotei.

Somente para esclarecer:

O sed está separando o nome do pacote em três partes, do final do nome para o início:

(.*\..*)$   - bloco terminado com xxxxx . (\. escape do ponto) xxxx
\.             - separador do segundo bloco (VERSION.EXTENSION$)
(.*)          - qualquer coisa, segundo bloco
-              - separador do segundo para o primeiro bloco NOME-VERSION
(.*)          - primeiro bloco

Quando se vê da primeira vez parece coisa do outro mundo. Gostei.

Testei também a dica do Tiago B, mas o egrep não funcionou. Mas a simplicidade do sed + ER (.*-.*\..*\..*$). Simples e funcional.

Obrigado,
Alves
Ah.. se voce percebeu o .tar.gz e quer tirar o . do inicio, é soh
mudar uma baba na regex, ficando assim:

sed 's/\(.*\)-\(.*\)\.\(.*\..*\)$/\3/'

Só joguei o ponto pra fora do conjunto 3...


Flávio do Carmo Junior

On 9/13/06, Flavio Junior <address@hidden> wrote:
> hm..
> Nao se sei é mais elegante ou menos do que sua forma, mas é 1 forma:
>
> root@bishamonten:~# SRC="scilab-3.9.7.tar.gz"
> root@bishamonten:~# PACKAGE="$(echo $SRC | sed
> 's/\(.*\)-\(.*\)\(\..*\..*\)$/\1/')"
> root@bishamonten:~# VERSION="$(echo $SRC | sed
> 's/\(.*\)-\(.*\)\(\..*\..*\)$/\2/')"
> root@bishamonten:~# EXTENSION="$(echo $SRC | sed
> 's/\(.*\)-\(.*\)\(\..*\..*\)$/\3/')"
> root@bishamonten:~# echo $PACKAGE $VERSION $EXTENSION
> scilab 3.9.7 .tar.gz
> root@bishamonten:~#
>
>
> Sorte,
>
> Flávio do Carmo Junior
>
> On 9/13/06, address@hidden <address@hidden> wrote:
> > Olá pessoal,
> >
> > Estou buscando uma forma alternativa de fazer a seleção de trechos
> > específicos de uma string. O problema é o seguinte: Tenho o nome de uma > > fonte de um programa no formato "nome-versão.extensão", onde a extensão > > geralmente é .tar.gz ou .tar.bz2. Vou considerar com VERSION tudo entre
> > o "-" após o nome e o "." à frente da extensão. O nome (PACKAGE) já
> > possuo, mas quero remover a VERSION e a EXTENSION. Estou fazendo da
> > forma abaixo:
> >
> > PACKAGE="scilab"
> >
> > SRC="scilab-3.9.7.tar.gz"
> >
> > EXTENSION=$( echo $SRC | rev | cut -f-2 -d. | rev )
> >
> > => tar.gz
> >
> > VERSION=$( T=`echo ${SRC#$PACKAGE-}`; echo ${T%.$EXTENSION} )
> > ou
> > VERSION=`echo ${SRC#$PACKAGE-}`; VERSION=`echo ${VERSION%.$EXTENSION}`
> >
> > => 3.9.7
> >
> > Posso imaginar outras formas de fazer o mesmo, com:
> >
> > echo $SRC | rev | awk -F. '{ print $1"."$2}' | rev
> >
> > para a EXTENSION, mas gostaria de conhecer algumas versões da lista.
> > Alguém se habilitar?
> >
> > Até
> > Alves
> >
> >
> > _______________________________________________________
> > Yahoo! Acesso Grátis - Internet rápida e grátis. Instale
> > o discador agora!
> > http://br.acesso.yahoo.com
> >
> >
> > ---------------------------------------------------------------------
> > 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
> >
> >
> >
> >
> >
> >
>



        

        
                
_______________________________________________________ Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas !
http://br.answers.yahoo.com/


reply via email to

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