
Estoy intentando revisar correos electrónicos individuales y recuperar el nombre del host. Cada correo electrónico tiene una sección Para: con una dirección de correo electrónico " [email protected]
". Estoy intentando recuperar sólo " aol.com
"
P.ej:
To: [email protected] (abc123)
To: [email protected],hk (Jim)
To: [email protected]\ (Jim)
Rendimiento esperado:
aol.com
yahoo.com,hk
yahoo.com\
Respuesta1
Intentar:
sed 's/.*@\(.*\) .*/\1/g' input
O:
awk -F '[@ ]' '{print $3}' input
Este guarda un espacio final:
grep -Eo '@.* ' input
Respuesta2
Yo usaría las expresiones regulares compatibles con Perl de GNU grep:
grep -oP '(?<=@)\S+'
Respuesta3
Puedes mantenerlo simple y usar cortar:
cut -d'@' -f2
Por ejemplo, si tuviera estos correos electrónicos en un archivo grande llamado emails.txt:
grep 'To:' emails.txt | cut -d'@' -f2