我正在使用getamil来检索电子邮件。 我在“〜/ bak / mail”下有一个名为“new”的目录,电子邮件将发送到该目录。 我收到的每封新电子邮件都是在“〜/ bak / mail / new”目录下以“.ubuntu”扩展名创建的。
当我只是“捕捉”每个文件时,它没有正确显示,因为它有各种标题等。 例如: Delivered-To:,Received:,Authentication-Results:等。
我并不关心正确解析标题,但更关心使用等号字符(=)打破长行的事实。 因此,原始邮件中根本没有等号的行如下所示:
you have received this email message since you are subscribed to the public group=
"Customers" public group.
逐行浏览文件或“cat”shell中的文件,而不是
you have received this email message since you are subscribed to the public group "Customers" public group.
出现在邮件客户端中。
我正在编写一个脚本,我正在手动解析文件,但是我希望将该行视为没有=符号的行,因此逐行读取文件并不能解决问题。 “文件......因为在这些方面我会遇到以=符号终止的较短行。
如何在脚本中逐行检查这样的电子邮件文件,但是将行看作是实线,而不是用=符号?
感谢。
答案 0 :(得分:0)
不确定这是否正是您要查找的内容,但以下内容删除了以=
开头的换行符cat test | sed ':a;N;$!ba;s/=\n/test/g'
对于旗帜等有一个很好的解释: http://www.canbike.org/information-technology/sed-delete-carriage-returns-and-linefeeds-crlf.html
*编辑:澄清它取代了换行符和'=',从字面上看,如果有空格则不行。如果有空格,您可以尝试:
cat test | sed ':a;N;$!ba;s/=[[:blank:]]*\n/ /g'
这将删除= =和中断之间任意数量的(并且只有)制表符/空格的'='。我怀疑有没有。