在linux下,去除^M,將windows格式文件(dos文件)改成unix格式文件

  在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修改文件命令行

  • 若是文件是在windows環境下建立並編輯的,文件中全部的換行符都是'\r\n',vi會在打開文件時識別出該文件是dos格式,此時不會顯示^M,在命令行模式下輸入:set fileformat=unix,而後保存便可。
  • 若是文件中的換行符有些是爲'\r\n',有些是'\n',在vi顯示文件時,爲'\r\n'將會顯示爲^M而後換行。這種狀況能夠直接用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

相關文章
相關標籤/搜索