Você não especificou qual sabor de grep você usa, mas é possível que você
use GNU grep . Por padrão, grep usa Basic Regular Expressions ,
e como é explicado em man grep :
Basic vs Extended Regular Expressions
In basic regular expressions the meta-characters ?, +, {, |, (,
and ) lose their special meaning; instead use the backslashed
versions \?, +, {, \|, (, and ).
Observe que, se você usou -E , mudaria para Extended Regular Expressions (ERE) e teria que usar \+ , porque, por padrão, em
ERE e muitas outras expressões regulares sintaxes + significa one or more of the preceding character :
$ grep -E 'A\+B' test.txt
A+B
A+B
Então, para responder às suas perguntas:
-
Você deve usar
\quando quiser procurar caracteres literais. -
Em
BRE, um único ponto representaany character, como emERE.