【发布时间】:2020-12-29 05:54:15
【问题描述】:
我有一堆旧的、继承的 mbox 文件,我想将它们转换为 maildir。 问题:mbox 不完全符合 RFC。 在某些(但不是全部)邮件中,有几个邮箱在“^From”行之前缺少空行,这导致 mb2md 无法将这些邮件彼此分开。
例子:
...
Text of mail 1
... bla....
To unsubscribe, visit https:...
From fetchmail Fri Nov 8 18:35:54 CET 2002 ## ^missing empty line above
...
Text of mail 2
...
现在我正在寻找一种简单的方法,可以在任何匹配“^From”的行之前插入一个空行——但前提是前面没有空行。必须进行一种流式编辑,因为邮箱可能真的很大。
我经常使用 sed - 但我不熟悉多行匹配。今天尝试了几件事(修改后的剪切)没有成功:(
最后一次尝试是
sed -E ':a;N;$!ba;s/\n(..*)\nFrom /\n\1\n\nFrom /g' /tmp/testfile
只匹配最后一次出现的模式!?
sed/awk-experts - 你有什么提示吗?
【问题讨论】:
-
请参阅linux.die.net/man/1/formail,它可能比您可以手写的任何脚本更强大地为您完成这项工作。