在Windows系統下編輯的文件,換行符回車的格式爲'\r\n',在linux系統下,回車的格式爲'\n',在Windows下編輯的文本文件在上傳至linux服務器時,回車'\r\n'就顯示成^M+'\n'。linux
在Windows環境下,用ultraedit或者notepad plus都有相應的選項能夠將Windows下的文本格式文件轉換成unix格式文件。好比:notepad plus中「編輯」—>「檔案格式轉換」—>「轉換爲UNIX格式」。windows
在Linux下面,通常有三種方式來轉換文件:服務器
1.使用dos2unix工具工具
通常的分發版本中都帶有這個小工具(若是沒有能夠根據下面的鏈接去下載),使用起來很方便:
$ dos2unix myfile.txt
該命令會去掉行尾的^M。spa
2.用vi修改文件命令行
":%s/^M//g" 替換全部的^Munix
":%s/^M$//g" 替換行尾的^Morm
":%s/^M/[ctrl-v]+[enter]/g" 將^M替換成回車it
":%s/^M/\r/g" 將^M替換成回車form
在命令中,^M的輸入方式是Ctrl+v,Ctrl+m,是一個字符,不是兩個字符。(^I 製表符也是如此。)
替換後,若是去看那些內容,你會發現還沒替換掉,可是若是你:x 保存退出後,再次用vi打開就發現他們已經徹底被替換掉了。
若是碰到有提示:E486: Pattern not found: ^M,單文件中實際存在^M,好比用"cat -v"或"cat -A"查看時,這種狀況應該是由於文本中每行都是'\r\n'結尾,vi自動用dos模式打開,這樣就看不到^M,這時候直接用:set fileformat=unix就能夠了。
3.用sed命令修改
$ sed -e 's/^M/\n/g' myfile.txt
^M = Ctrl+v,Ctrl+m