Как правильно создать регулярное выражение для "grep" программы Linux, чтобы найти всю электронную почту в, сказать / и т.д. каталог? В настоящее время мой сценарий следует:
grep -srhw "[[:alnum:]]*@[[:alnum:]]*" /etc
Это работающий хорошо - видение некоторых электронных писем, но когда я изменяю его, для ловли одного или нескольких charactes прежде - и после знак...
grep -srhw "[[:alnum:]]+@[[:alnum:]]+" /etc
.. это прекращает работать вообще
Кроме того, это не делает электронных писем выгод формы "Name.LastName@site.com"
Справка!
grep
требует экранирования большинства специальных символов регулярных выражений, включая +
. Вам нужно выполнить одно из этих двух:
grep -srhw "[[:alnum:]]\+@[[:alnum:]]\+" /etc
egrep -srhw "[[:alnum:]]+@[[:alnum:]]+" /etc
Вот еще один пример
grep -Eiorh '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})' "$@" * | sort | uniq > emails.txt
Этот вариант работает с доменами 3 уровня.