
Ich verwende Linux Centos 6-64.
Wie kann ich den folgenden Befehl ändern, das nur mit @ geschriebene E-Mails in einem Eingabeordner abruft:
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"
um E-Mails in allen folgenden @-Formaten abzurufen?
info@example.com
[email protected]
info(at)example.com
info[at]example.com
info%26%23064%3Bexample.com
info%40example.com
Wenn möglich, den Befehl in einer einzigen Zeile. Danke
Antwort1
Sie können -P
das Flag für Perl-Regex und -i
zur Nichtbeachtung der Groß-/Kleinschreibung verwenden:
grep -Pi "[A-Z0-9][\w.%+-]+(?:@|@|\(at\)|\[at\]|%26%23064%3B|%40)[A-Z0-9][A-Z0-9.-]+\.[A-Z]{2,6}"
\w
steht für[a-zA-Z0-9_]
Erläuterung:
[A-Z0-9] : 1 alphanum
[\w.%+-]+ : 1 or more alphanum, _, ., %, + or -
(?: : start non capture group
@ : literally @
| : OR
@ : html entity for @
| :
\(at\) :
| :
\[at\] :
| :
%26%23064%3B :
| :
%40 :
) :
[A-Z0-9] : 1 alphanum
[A-Z0-9.-]+ : 1 or more alphanum, . or -
\. : a dot
[A-Z]{2,6} : 2 upto 6 alpha (be aware that TLDs may have much more characters, see: https://www.iana.org/domains/root/db)
Ergebnis für gegebenes Beispiel:
grep -Pi "[A-Z0-9][\w.%+-]+(?:@|@|\(at\)|\[at\]|%26%23064%3B|%40)[A-Z0-9][A-Z0-9.-]+\.[A-Z]{2,6}" file.txt
info@example.com
[email protected]
info(at)example.com
info[at]example.com
info%26%23064%3Bexample.com
info%40example.com