Используя grep для нахождения всех электронных писем

Как правильно создать регулярное выражение для "grep" программы Linux, чтобы найти всю электронную почту в, сказать / и т.д. каталог? В настоящее время мой сценарий следует:

grep -srhw "[[:alnum:]]*@[[:alnum:]]*" /etc

Это работающий хорошо - видение некоторых электронных писем, но когда я изменяю его, для ловли одного или нескольких charactes прежде - и после знак...

grep -srhw "[[:alnum:]]+@[[:alnum:]]+" /etc

.. это прекращает работать вообще

Кроме того, это не делает электронных писем выгод формы "Name.LastName@site.com"

Справка!

16
задан AntonAL 24 May 2010 в 16:24
поделиться

2 ответа

grep требует экранирования большинства специальных символов регулярных выражений, включая + . Вам нужно выполнить одно из этих двух:

grep -srhw "[[:alnum:]]\+@[[:alnum:]]\+" /etc

egrep -srhw "[[:alnum:]]+@[[:alnum:]]+" /etc
6
ответ дан 30 November 2019 в 16:49
поделиться

Вот еще один пример

grep -Eiorh '([[:alnum:]_.-]+@[[:alnum:]_.-]+?\.[[:alpha:].]{2,6})' "$@" * | sort | uniq > emails.txt

Этот вариант работает с доменами 3 уровня.

20
ответ дан 30 November 2019 в 16:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: