У меня есть куча старых, унаследованных файлов 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 - есть ли у вас какой-нибудь намек?