
Estou tentando ler e-mails individuais e recuperar o nome do host. Cada e-mail possui uma seção Para: com um endereço de e-mail " [email protected]
". Estou tentando recuperar apenas " aol.com
"
Por exemplo:
To: [email protected] (abc123)
To: [email protected],hk (Jim)
To: [email protected]\ (Jim)
Resultado esperado:
aol.com
yahoo.com,hk
yahoo.com\
Responder1
Tentar:
sed 's/.*@\(.*\) .*/\1/g' input
Ou:
awk -F '[@ ]' '{print $3}' input
Este mantém um espaço final:
grep -Eo '@.* ' input
Responder2
Eu usaria as expressões regulares compatíveis com Perl do GNU grep:
grep -oP '(?<=@)\S+'
Responder3
Você pode mantê-lo simples e usar cut:
cut -d'@' -f2
Por exemplo, se você tivesse esses e-mails em um arquivo grande chamado emails.txt:
grep 'To:' emails.txt | cut -d'@' -f2