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

我将如何去提取mbox文件中最新收到的消息的“Date:”标题?

请注意,这不仅仅是最近发生的“^ Date:”的问题,因为它可能是引用回复的date,而不是实际上收到的最新消息。

所以,大概,一些正确的parsing将不得不涉及。

grepmail似乎善于通过mbox'es聪明地磨,但我似乎无法find一种方法来实现这个看似平凡的任务。

任何input?

谢谢。

E:好的,我真的很厚。 ls -l mbox可能会这样做。 那么在那里。

不过,我会对更有创意的方法非常感兴趣。

由于您需要理解实际的mbox格式,所以想到规范的邮件客户端mail或习惯性更强大的replacemailx

 mailx -f /path/to/mbox -H 

由于附加了新的消息,应按接收顺序列出消息。

作为一个起点,你可以做这样的事情来find最后一封邮件开始处的From行。

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

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

如果你特别想要一个Date标题而不是From行,你可以这样做:

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

这将打印第一行以Date:开头的邮件。 但是,如果最后一封邮件的标题没有Date标题,它仍然可以匹配内容而不是标题,所以你需要确保邮件实际上有一个Date标题。

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

grepmail -hH ^Date: /path/folder-h要求匹配在标题中, -H只打印匹配电子邮件的标题(即,所有这些)…

| grep ^Date: | grep ^Date:从这些头文件中,只提取Date:行…

| tail -1 | tail -1 :只打印最后一个。