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
.