2

问题复现

拿到的文档中包含了大量的\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">

看起来乱糟糟的,很不直观。

问题分析

简单的说是由于WindowsLinux换行的表示不一样导致的。详细的可以参考这篇文章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

参考资料


aqiongbei
2k 声望283 粉丝

人生路上,你走的每一步都算数


引用和评论

0 条评论