我将如何去提取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 :只打印最后一个。