Usando 'grep -e' e expressões regulares mais avançadas

0

Estou tentando usar a seguinte expressão regular em grep (pesquisa por casos mistos arquivos PNG ).

[A-Z]+[\w.]*\.[pPnNgG]{3}[\"')]*.*$

Quando eu insiro o comando, meu shell exibe > procurando mais entradas.

Eu posso usar grep para algumas expressões regulares básicas, mas nunca consegui usá-lo com expressões regulares mais avançadas.

FWIW, isso está no Cygwin no Windows 7.

    
por Alan 18.10.2010 / 08:43

1 resposta

2

Você não escapou do caractere " . A barra invertida dupla antes será substituída por barra invertida única e o " não será ignorado. Remova uma barra invertida ou adicione uma.

Experimente esta expressão regular:

grep -i '^[0-9a-z _]\+\.png\([^0-9a-z]+\|$\)' file | grep -v '^[0-9A-Za-z _]\+\.\(png\|PNG\)\([^0-9A-Za-z]\|$\)'

Ele corresponderá a todas as linhas que contenham desde o começo da linha:

  • pelo menos em caracteres 0-9 (intervalo de 0 , 1 , ..., 9 caracteres), a-z ' ' (espaço), '_'
  • um ponto (precisa ser escapado com barra invertida, caso contrário, significará 'qualquer caractere único')
  • 'png' (ou 'Png', etc. porque -i é adicionado)
  • e não seguido por 0-9 e a-z caracteres (ou A-Z porque -i é adicionado).

-i - desativará a diferenciação entre maiúsculas e minúsculas

    
por 18.10.2010 / 09:30

Tags