我正在解析一个邮箱文件,该邮箱文件存储了未成功发送的电子邮件的电子邮件服务器报告。我希望提取错误的电子邮件地址,以便将其从系统中删除。日志文件如下所示:
...some content...
The mail system
<slavicatomic118@hotmail.com>: host mx1.hotmail.com[65.54.188.94] said: 550
Requested action not taken: mailbox unavailable (in reply to RCPT TO
command)
...some content...
The mail system
<oki88@optimumpro.net>: host viking.optimumpro.net[79.101.51.82] said: 550
Unknown user (in reply to RCPT TO command)
...some content...
The mail system
<sigirna_luka@yahoo.com>: host mta5.am0.yahoodns.net[74.6.140.64] said: 554
delivery error: dd This user doesn't have a yahoo.com account
(sigirna_luka@yahoo.com) [0] - mta1172.mail.sk1.yahoo.com (in reply to end
of DATA command)
...etc.
电子邮件地址在“邮件系统”行的后面两行。像这样使用grep可以给我“邮件系统”行和接下来的两行:
grep -A 2 "The mail system" mbox_file
但是,我不知道如何从此输出中删除“邮件系统”行和第二个空行。我想我可以编写PHP / Perl / Python脚本来做到这一点,但是我不知道grep或其他一些标准工具是否可以做到这一点。我试图给负负偏移量-B参数:
grep -A 2 -B -2 "The mail system" mbox_file
但是grep抱怨:
grep: -2: invalid context length argument
有没有办法用grep做到这一点?
3
-B像-A一样接受数字,并且它将显示比赛之前的前几行。
—
Nikhil Mulley
是的,的确如此,但米兰对比赛开始前的情况不感兴趣...他遇到的问题是-A和-B仅接受正值...而且无论如何,-A和-B可以就像他试图做的那样,不能彼此相对使用。
—
Peter.O 2012年
哼,只是为了确保:这些是您没有(直接)从获得的文件中提取出来的伪地址,对吗?
—
Matthieu M. 2012年
@Matthieu M.不,它们来自真实的日志文件。我发现由于它们仍然是无效地址,因此发明可能有效的虚拟地址有什么意义?
—
米兰Babuškov2012年