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

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

Re: [shell-script] Extrair trecho de linha com sed


From: jimmy
Subject: Re: [shell-script] Extrair trecho de linha com sed
Date: Thu, 1 Apr 2010 10:41:20 -0300
User-agent: Mutt/1.4.2.3i

On Wed, Mar 31, 2010 at 11:05:20PM -0300, Elder Marco wrote:
> 
> 
>    Em Qua, 2010-03-31 às 17:51 -0300, jimmy escreveu:
>    > $ sed -r 's/[^(]+(\([^)]+\)).*/\1/' <<< "$string"
>    >
>    > idem, mas para colchetes:
>    >
>    > $ sed -r 's/[^{]+(\{[^}]+\}).*/\1/' <<< "$string"
>    >
>    > > E se eu quiser pegar todas as ocorrências?
>    > seria emular um "grep -o" por exemplo?
>    > e também vai depender de como quer ver a saída.
> 
>    Olá meu caro, obrigado pela resposta. Então eu tentei pegar a segunda
>    ocorrência:
> 
>    $ string="Este é um {texto} com algumas (palavras) entre {chaves} e
>    outras entre (parênteses)"
> 
>    e fiz assim:
> 
>    $ sed 's/[^(]*[(][^)]*[)][^(]*[(]\([^)]*\)[)].*/\1/' <<< "$string"
>    parênteses
> 
>    Mas achei isso grande demais. Será que poderia ser menor ou seria assim
>    mesmo?
você poderia mudar completamente a sua forma de abordar o problema,
exemplos:

- segunda ocorrência está no final da string:

  $ sed 's/.*(\([^)]\+\))$/\1/' <<< "$string"

- segunda ocorrência não está no fim da string:
(porque não apagar a primeira antes?)

  $ sed 's/.*(//1;s/).*$//' <<< "$string"

> 
>    Quanto a todas as ocorrências, seria todas essas palavras em um vetor ou
>    então em uma variável separada por por qualquer caractere que dê para
>    usar num laço como o for, por exemplo.
não é necessário o uso de backreferences nesse caso, apenas remova da
string aquilo que não lhe interessa, exemplo:
(vou considerar que você quer tudo que esteja entre parênteses ou colchetes) 

  $ sed 's/^[^{(]\+.//;s/[})][^{(]\+./ /g;s/\s\+$//' <<< $string

se ficar alguma dúvida, não passe vontade,
pergunte.

> 
>    --
>    Elder Marco
> 
>    GNU/Linux User: #471180
> 
>    "Contra o positivismo, que pára perante os fenômenos e diz: 'Há apenas
>    fatos', eu digo: 'Ao contrário, fatos é o que não
>    há; há apenas interpretações'. "(Nietzsche)
> 

-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
------------------------------


reply via email to

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