Я думаю, что моя проблема связана с тем, чтобы избежать различий между использованием регулярного выражения в PHP и использованием его в командной строке Bash.
Вот мое регулярное выражение, работающее в PHP:
$emailregex = '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$';
Так что я пытаюсь дать следующее в командной строке, и это, похоже, ничего не соответствует.
(где emails.txt
- это длинный текстовый файл с тысячами (возможно, плохо сформированных) адресов электронной почты, по одному на строку).
[root@host dir]# egrep '^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$' emails.txt
Я пытался окружить регулярное выражение двойными кавычками вместо одинарных кавычек, но это не имело значения.
Нужно ли добавить несколько обратных косых черт в регулярное выражение?
РЕШИТЬ! Спасибо!
Мой файл был создан в Windows, и дополнительный CR в маркерах END-OF-LINE не соответствовал знаку доллара в регулярном выражении.