
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