[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."
------------------------------
- Re: [shell-script] Extrair trecho de linha com sed,
jimmy <=