[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Capturando somente a palavra especifica no sed!
From: |
voyeg3r |
Subject: |
Re: Capturando somente a palavra especifica no sed! |
Date: |
Tue, 14 Oct 2008 19:24:28 -0000 |
User-agent: |
eGroups-EW/0.82 |
--- Em address@hidden, jimmy <ronaldo_tgz@...> escreveu
>
> On Tue, Oct 14, 2008 at 10:49:05AM -0700, Rafa Pongai wrote:
> > Pessoal,
> >
> > Estou com um problema que é o seguinte.
> > Tenho um arquivo .h que contem um enum que eu gostaria de pegar
todas as opções deste enum, mas somente as opções!
> > Todas as linhas tme o padrão, que começa com WCLK_CITY_
> >
> > Como saida gostaria de obter :
> >
> > HONOLULU
> > ANCHORAGE
> > VANCOVER
> > etc
> >
> > Só que tenho q fazer isto com o sed!!
> >
> >
> > Grato!!
> > POnga
> >
> >
> > Arquivo.h
> >
> > .
Minha sugestão
sed -i 's/\(WCLK_CITY_\)\([^,=]*\).*/\2/g'
estamos usando grupos de expressões regulares:
os grupos tem que ser escapados
grupo 1 (WCLK_CITY_) ..... escapado \(WCLK_CITY_\)
grupo 2 ([^,=]*) ......... escapado \([^,=]*\)
restante .*
O grupo 2 corresponde a ao que queremos por isso chamamos em \2
> > .
> > .
> > typedef enum
> > {
> > WCLK_CITY_BASE = 0,
> > WCLK_CITY_HONOLULU = WCLK_CITY_BASE,
> > WCLK_CITY_ANCHORAGE,
> > WCLK_CITY_VANCOUVER,
> > WCLK_CITY_SEATTLE,
> > .
> > .
> > .
> > }E_WCLK_CITY_ORDER;
> > ------------------------------------
>
> pode ser deletando as linhas que não importam e extraindo o padrão:
>
> $ sed '/^[ \t]\+WCLK_CITY_/!d;s/[ \t]\+\([A-Za-z_]\+\).*/\1/'
arquivo.h
>