Во-первых, вы используете расширенный синтаксис регулярных выражений (ERE), такой как {}
, ()
и ?
. Добавьте опцию -E
для использования ERE или экранирования {}
и ()
с обратной косой чертой и замените ?
следующим образом: grep -ne '[A-Za-z]\{1,30\} [AZ][az]\{1,30\}\W[A-Za-z]\{1,30\} [0- 9]\{1,30\}\W[0-9]\{5\} [A-Za-z]\{1,30\}\( [A-Za-z]\{1,30\ }\)\{0,1\}' электронные письма
Во-вторых, вы экранируете пробелы с помощью обратной косой черты внутри одинарных кавычек. В то время как большинство реализаций grep
обрабатывают это как простые пробелы, стандарт posix считает это неопределенным: Интерпретация обычного символа, которому предшествует обратная косая черта ( '\' ), не определена.
Могут быть дополнительные проблемы, но мы не можем знать, не зная синтаксиса вашего файла и того, что вы хотите grep