我必须在特定字符串下面剪切邮件正文。另外,消息是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
}
我错过了什么吗?
答案 0 :(得分:0)
当前的问题是你在base64 -d
之前缺少一个竖线字符。
但是,您可以轻松将其折叠为单个操作。
:0fb
* ^Subject:.*sometext
| base64 -d | sed '/string/,$d' | base64
在shell管道中进行此处理稍微没有吸引力,因为当它是无操作时(即当string
未在消息体中编码时),实际上没有办法避免过滤器。为了提高效率和优雅,您可能希望将其转换为简单的Python(或者您拥有的)脚本,如果您要过滤的字符串不存在,该脚本就会中止。