vim下处理文档中的\r\n\t字符

时间:2023-03-08 22:30:39

问题复现

拿到的文档中包含了大量的\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"></script>\r\n<script type="text/javascript" src="/cms/up3/js/jcarousellite_1.0.1.js"></script>\r\n<script type="text/javascript" src="/cms/up3/js/jquery-mylazyload.js"></script>\r\n\r\n\r\n<script type="text/javascript">var ctx = "";</script>\r\n<script type="text/javascript">\r\n\tfunction $(element){\r\n\t\treturn element = document.getElementById(element);\r\n\t}\r\n\r\n\tfunction valiWhiteList(accnbr){\r\n\t\tvar rs;\r\n\t\tjQuery.ajax({\r\n\t\t\ttype : "POST",\r\n\t\t\turl : "/validateWhiteList.action",\r\n\t\t\tasync: false,\r\n\t\t\tdata : "accnbr="+accnbr,\r\n\t\t\tdataType : "text",\r\n\t\t\tsuccess : function(ret){\r\n\t\t\t\tvar values = jQuery.trim(ret);\r\n\t\t\t\tif(values=="0"){\r\n\t\t\t\t\trs = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\trs = false;\r\n\t\t\t }\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn rs;\r\n\t}\r\n</script>\r\n\r\n\t\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n<script type="text/javascript" src="/pages/js/jquery.js"></script>\r\n<script type="text/javascript" src="/pages/js/divselect.js"></script>\r\n\r\n\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t<script type="text/javascript" src="/pages/js/selfservice/feesquery/MyFeesQuery.js"></script>\r\n\r\n\r\n\r\n\r\n\r\n

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

问题分析

简单的说是应该在Windows下与Linux下对换行的表示不一样导致的。详细的可以参考这篇文章linux下与windows下的换行符。这里不做过多的探究。我们只需要把这些字符替换成Linux中对应的表示即可。

问题解决

上面的问题多处于Linux机器上,我们使用Vim来进行处理。步骤如下:

  1. 把有如上问题的文档丢进Vim编辑器
  2. Vim中使用如下命令来处理\r\n,替换成正常的换行

    :1,$s/\\r\\n/\r/g
  3. 同样的方式处理\t,将至替换成四个空格

    :1,$s/\\t/    /g

方法详解

上面的解决方法是利用Vim的替换功能将字符替换成对应的正确的表示。其中:

1,$s/

表示从第一行到最后一行开始匹配,匹配的内容是后面的正则。

/\\r\\n/\r/g

这里是一个正则以及要替换的内容。遵循这样的格式:/要正则匹配的部分/要替换成的部分/g

参考资料