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

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

Re: [shell-script] Re: Expressões regulares usando SED


From: Tiago Barcellos Peczenyj
Subject: Re: [shell-script] Re: Expressões regulares usando SED
Date: Thu, 1 Nov 2007 16:25:47 -0200

sed -n '/State=\([^)]\+\)/{s//\1/;p}' xxx

vamos por partes:

Todos conhecem esse comando:
s/expressão/substituição/

porém eu posso executa-lo de forma mais rápida:

/expressão/{ s/expressão/substituição/ }

ou seja, apenas nas linhas onde existe a expressão eu irei fazer a
busca E substituição. felizmente o sed oferece esta sintaxe:

/expressão/{ s//substituição/ }

para não ter que repetir a *mesma* expressão. como eu quero imprimir
apenas aonde foi encontrado o padrão State=xxx eu faço sed -n e

/expressão/{ s//substituição/ ; p }

para imprimir esta linha em especial.

Agora vem o truque: me interessa apenas o que está DEPOIS dos =

Eu tinha duas opções, escolhi a mais exótica:

State=\( expressão regular \)

perceba que eu tenho um grupo. eu posso fazer a substituição de toda
essa expressão pelo que está entre parentesis apenas, chamando o
retrovisor \1

s/State=\( expressão regular \)/\1/

Outra forma seria apagar o State=

sed -n '/State=/{s///;p}' xxx
24

Facil né? Na verdade eu não tinha pensado q podia ser tão simples por
isso meti um grupo la em cima.


On 11/1/07, miguelcm86 <address@hidden> wrote:
>
> Olá tiago não consigo acreditar:P
>
> muito obrigado, estava aqui a passar a tarde toda á volta disso e
> agora voçê arranja-me logo 3 formas:P
>
> o meu problema é agora compreender, vou usar o do SED, pois é por ele
> que tenho feito tudo..
> > ~> sed -n '/State=\([^)]\+\)/{s//\1/;p}' xxx
> > 24
> tive a ler estas paginas:
> http://www.amk.ca/python/howto/regex/regex.html
> http://www.uky.edu/AS/Classics/regex.html
> http://br.geocities.com/cesarakg/sed-1.html#pick
> e não consegui encontrar a solução.
>
> Já agora será que podia explicar esta parte:
> \([^)]\+\)/{s//\1/;p}
>
-- 
Tiago B Peczenyj
Linux User #405772

http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"


reply via email to

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