从 mbox 文件中提取最新消息的日期

从 mbox 文件中提取最新消息的日期

我该如何提取 mbox 文件中提取最新收到的消息的“日期:”标题?

请注意,这不仅仅是对“^Date:”的最新出现进行 grep 的问题,因为它可能是来自引用的回复的日期,而不是实际上收到的最新消息。

因此,可能必须涉及一些适当的解析。

grepmail似乎擅长智能地研磨 mbox,但我似乎找不到用它来完成这个看似微不足道的任务的方法。

有什么意见吗?

谢谢。

E:好吧,我正式变胖了。ls -l mbox可能会这样。就这样。

尽管如此,我还是对于更有创意的方法非常感兴趣。

答案1

由于您需要一些能够理解实际 mbox 格式的东西,因此我想到的是规范的邮件客户端mail或传统的更强大的替代品。mailx

mailx  -f /path/to/mbox -H 

由于新消息是附加的,因此应按接收顺序列出您的消息。

答案2

作为起点,您可以做类似这样的事情来找到From上一封邮件开头的行。

tac "$MAIL" | grep -m1 '^From '

以 开头的行From表示 mbox 文件中邮件的起始点。它还包含邮件的接收时间,这通常比邮件头中的任何其他时间戳更可靠。

如果您特别想要一个Date标题而不是行From,您可以执行以下操作:

tac "$MAIL" | awk '/^Date: / {print} ; /^From / {exit}' | tail -1

Date:这将打印最后一封邮件中以 开头的第一行。但是,如果最后一封邮件的标题没有Date标题,它仍然可能与内容匹配,而不是标题,因此您需要以某种方式确保邮件确实有标题Date

答案3

grepmail -hH ^Date: /path/folder | grep ^Date: | tail -1

grepmail -hH ^Date: /path/folder-h要求匹配在标题中,-H仅打印匹配电子邮件的标题(即全部标题)...

| grep ^Date::从这些标题中,仅提取Date:行...

| tail -1:并且仅打印其中的最后一个。

相关内容