egrep com expressão regular [RESOLVIDO]

1. egrep com expressão regular [RESOLVIDO]

danilo
danilosampaio

(usa Debian)

Enviado em 14/02/2013 - 13:44h

Olá pessoal,

Estou precisando de uma ajuda de vcs novamente.

Dado um script, preciso encontrar todas as linhas que tenham uma definição de função. Exemplo:


function soma( param1, param2 ){
functionName = "soma"

return param1 + param2
}


Neste exemplo, eu preciso retornar a linha "function soma( param1, param2 ){".

Estou tentando fazer da seguinte forma:


#linhas contendo a palavra "function" seguida de espaços, tabs, ou "("
egrep "function[\s\t\(]*"


Contudo, desta forma está retornando tando a primeira linha, quanto a segunda:


function soma( param1, param2 ){
functionName = "soma"


Alguém poderia me explicar o que está errado? como eu faria para pegar só a primeira linha?


  


2. MELHOR RESPOSTA

Pedro Martelotta
pmartelotta

(usa CentOS)

Enviado em 14/02/2013 - 16:45h

Cara, outra alternativa seria usar assim:

$grep -w ^function

O '-w' pega exatamente o que você está buscando, sem texto antes ou depois e o '^' significa "tudo que começa com...".

3. Resolvido!

danilo
danilosampaio

(usa Debian)

Enviado em 14/02/2013 - 14:15h

Pessoal, consegui resolver com a seguinte expressão regular:


egrep "function\b"


Sinceramente não sei porque desta forma
egrep "function[\s\t\(]*" 
não funciona.

Se algumém souber, compartilhe!


4. Re: egrep com expressão regular [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/02/2013 - 16:02h

Funciona, sim. O problema é que a expressão regular que você colocou estava genérica demais: a parte entre colchetes foi seguida por um asterisco, que significa zero ou mais ocorrências. Com zero ocorrências, "functionData" corresponde à expressão.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts