问题复现
拿到的文档中包含了大量的\r
、\n
、\t
等字符,形如:
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n <title>历史账单</title>\r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n<script type="text/javascript" src="/pages/js/jquery-1.11.3.min.js"></script>\r\n<script type="text/javascript" src="/cms/up3/js/jquery.flashSlider-1.0.min.js"></script>\r\n<script type="text/javascript" src="/cms/up3/js/common.js">
看起来乱糟糟的,很不直观。
问题分析
简单的说是由于Windows与Linux对换行
的表示不一样导致的。详细的可以参考这篇文章linux下与windows下的换行符。这里不做过多的探究。我们只需要把这些字符替换成Linux
中对应的表示即可。在Ubuntu
中我们使用\r
来表示换行
(关于换行与回车可以参考回车与换行的区别),这里我们还要注意一点就是即使你在Windows
环境下,对于Vim
来说都是都是有固定的表示的。可以参考这个Why is r a newline for Vim?,这里我们只要知道:我们把\r\n
换成\r
就可以了。
问题解决
上面的问题多处于Linux
机器上,我们使用Vim
来进行处理。步骤如下:
- 把有如上问题的文档丢进
Vim
编辑器 - 在
Vim
中使用如下命令来处理\r\n
(记得转义),替换成\r
的换行
:1,$s/\\r\\n/\r/g
- 同样的方式处理
\t
,将至替换成四个空格
:1,$s/\\t/ /g
方法详解
上面的解决方法是利用Vim的替换功能将字符替换成对应的正确的表示。其中:
1,$s/
表示从第一行到最后一行开始匹配,匹配的内容是后面的正则。
/\\r\\n/\r/g
这里是一个正则以及要替换的内容。遵循这样的格式:/要正则匹配的部分/要替换成的部分/g