0

我必须将邮件正文剪切到某个字符串以下。此外,消息是 base-64 编码的。这个食谱很好用:

:0fb
| base64 -d
:0fb
|sed '/string/,$d'
:0fb
| base64

食谱首先解码身体,做我需要的,然后编码回剩下的。但是,如果我尝试添加一些过滤,它会以带有空正文的消息结尾:

:0
* ^Subject.*sometext
{
:0fb
|base 64 -d
:0fb
|sed '/string/,$d'
:0fb
|base 64
}

我错过了什么吗?

4

1 回答 1

0

直接的问题是您之前缺少管道字符base64 -d

但是,您可以轻松地将其折叠为单个操作。

:0fb
* ^Subject:.*sometext
| base64 -d | sed '/string/,$d' | base64

string在 shell 管道中执行此处理有点没有吸引力,因为当过滤器是空操作时(即未在消息体中编码时) ,确实没有办法避免过滤器。为了效率和优雅,您可能希望将其转换为简单的 Python(或您拥有的)脚本,如果您要过滤的字符串不存在,该脚本只会中止。

于 2015-05-05T12:49:55.823 回答