Grep palavras com símbolos especiais

5

Como faço para isso? (Incluindo os caracteres especiais)

"Limit reached."[\n]"

Eu tentei voltar a cortar os símbolos especiais, mas acabei não funcionando, assim:

grep '\"Limit reached\.\"\[\n\]\" '

Eu também tentei outras técnicas, mas também não trabalhei. Existe alguma outra sintaxe que você possa sugerir / aconselhar?

    
por Cyril 11.09.2018 / 09:37

2 respostas

11

use -F no grep

$ cat test.txt
"Limit reached."[\n]"
test
"Limit reached."[\n]"

$ grep -F '"Limit reached."[\n]"' test.txt
"Limit reached."[\n]"
"Limit reached."[\n]"

De acordo com a página "Manual",

   -F, --fixed-strings, --fixed-regexp
          Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched.  (-F is specified by> POSIX,
 --fixed-regexp is an obsoleted alias, please do not use it new scripts.)
    
por 11.09.2018 / 09:55
5

Você estava muito perto.

Você não precisa exceder " e não pode usar o shell-escape entre aspas simples. Portanto, todo o escape é para grep, não para o shell. (Nota sobre aspas simples: aspas simples fazem sem interpretação . Se você precisar colocar uma aspa simples com uma única string entre aspas, então você tem que sair daspas simples, por exemplo, 'don'\''t' )

Teste

printf "%s" '"Limit reached."[\n]"' | grep  '"Limit reached\."\[\n\]"'
    
por 11.09.2018 / 09:55