
個々のメールを調べてホスト名を取得しようとしています。各メールには、メール アドレス " [email protected]
" の To: セクションがあります。取得しようとしているのは " aol.com
"だけです。
例えば:
To: [email protected] (abc123)
To: [email protected],hk (Jim)
To: [email protected]\ (Jim)
期待される出力:
aol.com
yahoo.com,hk
yahoo.com\
答え1
試す:
sed 's/.*@\(.*\) .*/\1/g' input
または:
awk -F '[@ ]' '{print $3}' input
これは最後のスペースを保持します:
grep -Eo '@.* ' input
答え2
私は GNU grep の Perl 互換正規表現を使用します:
grep -oP '(?<=@)\S+'
答え3
シンプルにするために、cut を使用することもできます。
cut -d'@' -f2
たとえば、次のメールが emails.txt という 1 つの大きなファイルに保存されているとします。
grep 'To:' emails.txt | cut -d'@' -f2