除去文件中显示的^ M符号

  

除去文件中显示的^ M符号

  

背景

  

在windows下编辑的文件,在Linux下使用vim打开有时会出现^ M符号。

  

原理

  

本节内容参考[1]

  

vim被配置为fileformat=unix,而你打开的文件都是dos格式的.unix格式的换行符为0 a (ascii码)也就是& lt; LF>, dos格式的换行符为0 d 0(也就是& lt; CR> & lt; LF>), & lt; CR>其实就显示为^ .
回想计算机的史前史,那时的打字机使用两个字符来开始一个新行,首先是一个字符命令使打印头移回开始位置(回车,& lt; CR>),然后另一个字符命令控制向前进纸一行(进纸,& lt; LF>)。
在计算机诞生之初,存储设备十分昂贵。于是有人就提出没有必要用两个字符来表示一行的结束:

  
      <李> UNIX一族决定只用进纸一个字符& lt; LF>来表示行尾。   <李>来自苹果mac阵营的人则把回车& lt; CR>作为换行的标准。   <李> ms - dos(和微软的Windows)仍然决定沿用古老的回车换行& lt; CR> & lt; LF>传统。   
  

这也意味着如果把文件从一个系统移到另一个不同的系统,你就会遇到与换行相关的问题。

  

解决方法

  

今天无意中发现去除^ M的好办法:

  
      <李>指定文件名:<代码> sed - s/\ s * $//g”文件名   <李>当前目录下所有文件:<代码> sed - s/\ s * $//g”“ls”   

除去文件中显示的^ M符号