除去文件中顯示的^M符號

除去文件中顯示的^M符號

背景

在windows下編輯的文件,在Linux下使用vim打開有時會出現^M符號。vim

原理

本節內容參考[1]windows

vim被配置爲fileformat=unix,而你打開的文件都是dos格式的。unix格式的換行符爲0A(ascii碼)也就是<LF>,dos格式的換行符爲 0D 0A(也就是<CR><LF>),<CR>其實就顯示爲^M。
回想計算機的史前史,那時的打字機使用兩個字符來開始一個新行。首先是一個字符命令使打印頭移回開始位置(回車,<CR>),而後另外一個字符命令控制向前進紙一行(進紙,<LF>).
在計算機誕生之初,存儲設備十分昂貴。因而有人就提出沒有必要用兩個字符來表示一行的結束:ide

  • UNIX一族決定只用進紙一個字符<LF>來表示行尾。
  • 來自蘋果mac陣營的人則把回車<CR>做爲換行的標準。
  • MS-DOS(和微軟的Windows)仍然決定沿用古老的回車換行<CR><LF>傳統。

這也意味着若是把文件從一個系統移到另外一個不一樣的系統,你就會遇到與換行相關的問題..net

解決方法

今天無心中發現去除^M的好辦法:unix

  • 指定文件名: sed -i "s/\s*$//g" filename
  • 當前目錄下全部文件: sed -i "s/\s*$//g" `ls`
相關文章
相關標籤/搜索