Я использую Linux Centos 6-64.
Как я могу изменить следующую команду , который получает только письма, написанные с @, внутри входной папки:
grep -E -o -r "[A-Za-z0-9][A-Za-z0-9._%+-]+@[A-Za-z0-9][A-Za-z0-9.-]+\.[A-Za-z]{2,6}" /inputfolder/ | sort | uniq > "/outputfolder/result.txt"
получить электронную почту во всех этих @ форматах ниже?
info@example.com
info@example.com
info(at)example.com
info[at]example.com
info%26%23064%3Bexample.com
info%40example.com
Если возможно, команда в одну строку. Спасибо
(foo|bar)
вместо буквального@
,(foo|bar)
, так как это будет соответствовать только если кто-то буквально набралfoo
или жеbar
, Это был просто пример. Вам нужно заменитьfoo
а такжеbar
с соответствующими альтернативами для@
что вы хотите захватить.Ответы:
Вы могли бы использовать
-P
флаг для регулярного выражения Perl и-i
без учета регистра:\w
обозначает[a-zA-Z0-9_]
Объяснение:
Результат для данного примера:
источник
-or
варианты так становитсяgrep -Pior ....
если вы хотите выполнить рекурсивный поиск всех файлов и вывести только соответствующую часть.