Tente:
sed 's/.*@\(.*\) .*//g' input
Ou:
awk -F '[@ ]' '{print $3}' input
Este mantém um espaço final:
grep -Eo '@.* ' input
Estou tentando passar por e-mails individuais e recuperar o nome do host.
Cada email tem uma seção Para: com um endereço de email " [email protected]
". Estou tentando recuperar apenas " aol.com
"
Eg :
To: [email protected] (abc123)
To: [email protected],hk (Jim)
To: [email protected]\ (Jim)
Saída esperada :
aol.com
yahoo.com,hk
yahoo.com\
Tente:
sed 's/.*@\(.*\) .*//g' input
Ou:
awk -F '[@ ]' '{print $3}' input
Este mantém um espaço final:
grep -Eo '@.* ' input
Eu usaria o regex compatível com perl do GNU grep:
grep -oP '(?<=@)\S+'
Você pode simplificar e usar o corte:
cut -d'@' -f2
Por exemplo, se você tivesse esses e-mails em um grande arquivo chamado email.txt:
grep 'To:' emails.txt | cut -d'@' -f2