Como usar o 'grep' com caracteres como * e _?

1

Eu preciso encontrar algum texto em um ou mais arquivos.

Isso é o que eu uso:

grep -irI "hello" ~/

No entanto, se eu quiser encontrar uma string contendo caracteres como * ou _ , eles parecem ser ignorados.

Digamos que eu queira pesquisar em todos os arquivos a string a**__ .

Como posso fazer isso? Muito obrigado - eu simplesmente não consigo descobrir isso!

    
por user203748 22.10.2013 / 17:01

2 respostas

1

Existe uma opção -F:

-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched.  (-F is specified by POSIX.)

Isso desativará a pesquisa por expressões regulares e a interpretação de caracteres como * ou . . Exemplo:

$ cat test 
a**__
$ grep -F 'a**__' test 
a**__
    
por Nykakin 22.10.2013 / 17:15
0

Você deve usar um caractere de escape ( \ ) na frente de * porque, caso contrário, sua string de pesquisa se tornará uma expressão regular.

Por exemplo, se você quiser pesquisar por **__ , poderá usar:

 grep -irI "\*\*__" ~/

Mais sobre: Em uma expressão regular, quais caracteres precisam escapando? .

    
por Radu Rădeanu 22.10.2013 / 17:11