精品軟體與實用教程
linux去掉windows下檔案中的\r
linux上用vim寫的文件test.txt拷貝到windows上,結果所有的內容都顯示在一行中。 Windows上建立的test.txt拷貝到linux上,結果linux程式運行異常。當你在Windows上寫好linux shell script, 拷貝到linux下運行,就會出問題。問題就出在換行符^M身上!
Unix體系裡,每行結尾只有「<换行>”,即“\n”;
Windows體系裡面,每行結尾都是「<换行><回 车>”,即“\n\r”。
一個直接結果是,Unix體系下的檔案在Windows裡打開的話,所有文字會變成一行;
而Windows裡的檔案在Unix下打開的話,在每行的結尾可能會多出一個^M符號。
使用vim方式處理
在vim指令模式下輸入%s/^M$//g
回車即會自動刪除該檔案中的所有^M 字元。
那麼,這句命令到底是什麼意思呢? % 指匹配整個文件,s 是置換的意思,^M 注意要用Ctrl + V Ctrl + M 來輸入,M 後面的$ 代表匹配行尾的內容,最後的g 則表示每行中匹配到的內容都要置換。
了解指令的意義,就好變通使用了,比如說,要將某個檔案中的Vim 全部替換成VIM,則可以使用這樣的指令::%s/Vim/VIM/g。
方法1::%s/^M//g
在指令模式下:輸入:%s/^M//g 然後,回車即可替換
注意,其中”^M”的輸入,分別是“Ctrl+v”、“Ctrl+M”鍵生成的
方法2::set fileformat=unix
使用vi開啟文字文件
vi 需要編輯的檔案名稱
命令模式下輸入
:set fileformat=unix
:w
方法3:使用sed工具
使用sed工具
sed 's/^M//' filename > tmp_filename
方法4:tr -d '\r'
既然window下的回車符多了'\r',那麼當然刪除'\r' ,也可以實現:
tr -d '\r'
方法5:dos2unix指令(最常用的方法)
dos2unix命令:
dos2unix 需要轉換的檔案名稱
將檔案直接轉換成unix格式
透過上述方法可以將在windows下編輯的檔案轉換成linux下可讀取的檔案。