用于修复无效RFC2822电子邮件标头的sed脚本

时间:2013-03-08 16:35:46

标签: sed

我有电子邮件进入处理系统,其中一些已开始使用无效的空白行拆分电子邮件标题,如下所示:

Date: Thu, 7 Mar 2013 22:24:44 +0000
Message-ID: <86A1035194F72547A2979A7767CD3BAF35485B8D@QTS-MB02.ecicloud.com>
References: <C0DA0966847B31409025BBD9A70187DA35399D17@QTS-MB02.ecicloud.com>

Accept-Language: en-US
Content-Language: en-US

中间的空行无效,导致下游程序出现问题。

我想提出一个简单的sed脚本来修复任何特定于Accept-Language:.*之后出现空白行的事件,以便删除空白行。

3 个答案:

答案 0 :(得分:1)

使用sed删除文件中所有行中的空白行:

sed -i '/^\s*$/d' file

从文件开头删除空白行,直到从Content-Language开始的行:

sed -i '1,/^Content-Language/{/^\s*$/d}' file

答案 1 :(得分:1)

sed '/^[ \t]*$/ {N;/\nAccept-Language: en-US$/! P;D;}' FILE

答案 2 :(得分:0)

您应该真正查看用于处理电子邮件的formail和procmail命令。请参阅http://www.procmail.org/http://linuxcommand.org/man_pages/formail1.html