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: 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."
------------------------------


reply via email to

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