Abrufen des Hostnamens aus der E-Mail-Adresse

Abrufen des Hostnamens aus der E-Mail-Adresse

Ich versuche, einzelne E-Mails durchzugehen und den Hostnamen abzurufen. Jede E-Mail hat einen Abschnitt „An:“ mit einer E-Mail-Adresse „ [email protected]“. Ich versuche, nur „ aol.com“ abzurufen.

Z.B:

To: [email protected] (abc123)

To: [email protected],hk (Jim)

To: [email protected]\ (Jim)

Erwartete Ausgabe:

aol.com

yahoo.com,hk

yahoo.com\

Antwort1

Versuchen:

sed 's/.*@\(.*\) .*/\1/g' input

Oder:

awk -F '[@ ]' '{print $3}' input

Dieses behält ein letztes Leerzeichen bei:

grep -Eo '@.* ' input

Antwort2

Ich würde die Perl-kompatiblen regulären Ausdrücke von GNU Grep verwenden:

grep -oP '(?<=@)\S+'

Antwort3

Sie können es einfach halten und Schnitte verwenden:

cut -d'@' -f2

Wenn Sie diese E-Mails beispielsweise in einer großen Datei namens „emails.txt“ hätten:

grep 'To:' emails.txt | cut -d'@' -f2

verwandte Informationen