Вы не указали, какой аромат grep
вы используете, но возможно вы используете GNU grep
. По умолчанию grep
использует Basic Regular Expressions
, и как это объясняется в man grep
:
Основные против расширенных регулярных выражений
В основных регулярных выражениях метасимволы?, +, {, |, (
И) теряют свое особое значение; вместо этого используйте
версии с обратной косой чертой \ ?, +, {, \ |, (и).
Обратите внимание, что если бы вы использовали, -E
вы бы переключились на Extended Regular Expressions (ERE)
и должны были бы использовать, \+
потому что по умолчанию в ERE
и во многих других регулярных выражениях синтаксис +
обозначает one or more of the preceding character
:
$ grep -E 'A\+B' test.txt A+B A+B
Итак, чтобы ответить на ваши вопросы:
Вы должны использовать,
\
когда вы хотите найти буквальный символ.В
BRE
одной точке означает,any character
как и вERE
.