[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: |
Wed, 31 Mar 2010 17:51:20 -0300 |
User-agent: |
Mutt/1.4.2.3i |
On Wed, Mar 31, 2010 at 02:29:18PM -0300, Elder Marco wrote:
>
>
> Caros,
>
> Dei uma pesquisada na lista e na internet e não sei se usei os termos
> corretos de pesquisa, mas não cheguei a achar algo sobre como extrair um
> trecho de uma linha com o sed, exceto por um que não compreendi no site
> do tobias. Creio que eu esteja errando na expressão regular (que estou a
> aprender) ou algum "macete" do sed que não estou levando em conta (que
> também estou a aprender).
>
> Vejam:
> $ string="Este é um {texto} com algumas (palavras) entre {chaves} e
> outras entre (parênteses)"
>
> Então queria pegar a primeira ocorrência de uma palavra entre
> parênteses:
>
> $ echo "$string" | sed '/\({.*?}\)/\1/'
> Este é um {texto} com algumas (palavras) entre {chaves} e outras entre
> (parênteses)
isso que você está usando se chama backreference.
>
> $ echo "$string" | sed '/\(\{.*?\}\)/\1/'
> sed: -e expressão #1, caractere 17: Expressão regular precedente
> inválida
você está se atrapalhando nos caracteres que deve ou não "escapar",
parece que deseja usar a expressão '.*?' que, até onde sei, não é
compreendidada pelo sed.
>
> E quanto a pegar uma palavra entre parênteses, não sei como proceder.
>
> Teriam alguma sugestão?
a primeira palavra em parênteses:
$ 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.
> E aproveitando, algum material na internet para me indicar a respeito de
> maneira que eu possa me aprofundar mais?
O material do Thobias Salazar Trevisan, do Aurélio Marinha Jargas e a
info do sed.
>
> --
> 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."
------------------------------