![从大量电子邮件列表中查找唯一发件人](https://linux22.com/image/567801/%E4%BB%8E%E5%A4%A7%E9%87%8F%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E5%88%97%E8%A1%A8%E4%B8%AD%E6%9F%A5%E6%89%BE%E5%94%AF%E4%B8%80%E5%8F%91%E4%BB%B6%E4%BA%BA.png)
我刚刚在 Centos /home/user/mail/new 中的用户帐户下发现了一个巨大的电子邮件列表
我打开了其中一些邮件,发现它们是从一个特定的 cron 作业发送的。发件人地址是[email protected]
。我需要查明所有这些电子邮件是否都是由[email protected]
- 发送的。大约有 30GB 的电子邮件。有没有办法找出一串唯一的发件人地址列表?电子邮件的格式如下:
返回路径:
信封寄至:[电子邮件保护]
发货日期:2011 年 8 月 11 日星期四 04:34:02 -0400
已收到:来自 hostname.com 的用户,使用本地 (Exim 4.69)
(信封发件人)
编号 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 来自:/home/user/mail/new | wc -l
要获取 root 的电子邮件数量,请运行此命令
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
不是一个文件,每封邮件大概20K,总邮件有30G。
awk '/^From: / { print $2 }' /home/user/mail/* | sort | uniq -c | sort -rn