膨大なメールリストから一意の送信者をgrepで抽出する

膨大なメールリストから一意の送信者をgrepで抽出する

Centos /home/user/mail/new のユーザーアカウントの下に大量のメールリストが見つかりました

いくつか開いてみると、特定の cron ジョブから送信されたことがわかりました。送信元アドレスは です[email protected]。これらすべてのメールが から送信されたかどうかを確認する必要があります。[email protected]メールは約 30 GB あります。送信元アドレスの一意のリストを grep で抽出する方法はありますか? メールの形式は次のようになります。

復路:

封筒の宛先:[メールアドレス]

配達日: 2011 年 8 月 11 日 (木) 04:34:02 -0400

受信: hostname.com のユーザーからローカルで受信 (Exim 4.69)

(封筒-差出人)

id 1QrQiI-0004qM-6V

のために[メールアドレス]; 2011 年 8 月 11 日 (木) 04:34:02 -0400

から:[メールアドレス](Cronデーモン)

に:[メールアドレス]

件名: Cron /opt/gsn/reports/pr.sh

コンテンツタイプ: text/plain; 文字セット=UTF-8

自動送信: 自動生成

メッセージ ID:

日付: 2011 年 8 月 11 日 (木) 04:34:02 -0400

[メッセージ内容]

答え1

$ grep -E '^From:' /some/file | uniq

答え2

メールの合計数を取得するには、次のコマンドを実行します。

grep From: /home/user/mail/new | wc -l

ルートからのメール数を取得するには、これを実行します

grep ^From /home/user/mail/new | grep root\@hostname.com | wc -l

現在 (メールの合計数) - (ルートからのメール数) = メールの合計数からの実際のメール数。

答え3

これを試して:

awk '/^From: / { print $2 }' /home/user/mail/new | sort | uniq -c | sort -rn

1 つのファイルではなく、各メールは約 20K で、メールの合計は 30G になります。

awk '/^From: / { print $2 }' /home/user/mail/* | sort | uniq -c | sort -rn

関連情報