Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 通过避免=符号自动打断长行,逐行阅读电子邮件的脚本方式_Linux_Bash_Email - Fatal编程技术网

Linux 通过避免=符号自动打断长行,逐行阅读电子邮件的脚本方式

Linux 通过避免=符号自动打断长行,逐行阅读电子邮件的脚本方式,linux,bash,email,Linux,Bash,Email,我正在使用getamil检索电子邮件。 我在“~/bak/mail”下有一个名为“new”的目录,电子邮件将发送到该目录。 我收到的每一封新电子邮件都会在“~/bak/mail/new”目录下创建一个扩展名为“.ubuntu”的文件 当我只是“cat”每个文件时,它不会正确显示,因为它有各种各样的标题,等等。 例如: 发送到:,接收:,验证结果:,等等 我并不真正关心如何正确解析标题,但更关心的是使用等号字符(=)打断长行这一事实。 因此,原始消息中没有等号的行如下所示: you have re

我正在使用getamil检索电子邮件。 我在“~/bak/mail”下有一个名为“new”的目录,电子邮件将发送到该目录。 我收到的每一封新电子邮件都会在“~/bak/mail/new”目录下创建一个扩展名为“.ubuntu”的文件

当我只是“cat”每个文件时,它不会正确显示,因为它有各种各样的标题,等等。 例如: 发送到:,接收:,验证结果:,等等

我并不真正关心如何正确解析标题,但更关心的是使用等号字符(=)打断长行这一事实。 因此,原始消息中没有等号的行如下所示:

you have received this email message since you are subscribed to the public group=

 "Customers" public group.
当逐行查看文件或在shell中“cat”时,而不是

you have received this email message since you are subscribed to the public group "Customers" public group.
正如邮件客户端中显示的那样

我正在编写一个脚本,其中我正在手动解析文件,但我希望将该行视为不带=符号的一行,因此逐行读取文件不会起作用,也不会对文件进行“cat”操作。。。因为在这些方法中,我遇到了以=号结尾的较短行

我怎样才能在脚本中逐行查看这样一个电子邮件文件,但将行视为完整的行,而不是用=符号打断


谢谢。

不确定这是否正是您要查找的内容,但以下内容删除了前面有一个换行符的换行符=

cat test | sed ':a;N;$!ba;s/=\n/test/g'
有关旗帜等的详细说明:

*编辑:为了澄清,它将替换换行符和“=”,如果有空格,它将不起作用。如果存在空白,您可以尝试:

cat test | sed ':a;N;$!ba;s/=[[:blank:]]*\n/ /g'

这将删除一个“=”,该“=”在=和中断之间有任意数量的制表符/空格。但我有点怀疑是否有。

请您的问题向我们展示您输入和所需输出的代表性样本。@TomFenech,完成。希望现在好多了!谢谢。我仍然不清楚您是要在公共组之后创建
=
,还是要删除等号。。此外,我不建议为每封邮件创建一个新文件。在某个时候,您将需要大量的磁盘,并且您可能会缺少索引节点。使用诸如
.mbox
spool mail
@suleiman之类的文件类型是有原因的。我再次编辑了该部分,很抱歉,第一次/第二次无法清除。我不希望他们在那里,因为我想这是电子邮件的构建方式。。。我想把这一行作为一个整体来读,而不是那些符号。我在线阅读,并不是唯一一个遇到=签名在电子邮件原始文件中打断长行的人。你试过解码引用的可打印编码内容吗?我提出了相同的解决方案,但文本之间有一条空行。我也不能自满<代码>sed-e:a-e'$!Ns/=\n/;ta'-e'P;D’尝试cat测试| sed’/^$/D’| sed:a;N、 美元!文学士;s/=\n//g'Eh这太草率了。对不起,有点麻烦。在我的语法中,我可以简单地将\n即cat test | sed:a;N、 美元!文学士;s/=\n\n//g'但是直接通过sed不会产生相同的效果,不知道为什么。谢谢您的尝试,但这不是我想要的。就像我说的-我逐行解析文件,所以在每次迭代中我都不会“看到”下一行。我想找到一种方法,可能先解码电子邮件,然后逐行阅读,这样我就不必处理文本操作了。顺便说一句,在一行的开头或结尾也可以有等号,所以我当然不想把它们都去掉。