1. 程式人生 > >linux和windows換行符的^M問題

linux和windows換行符的^M問題

起源

在windows中寫的指令碼執行完全沒問題,程式碼一模一樣,切換到linux中執行報錯。利用命令 “vi/vim -b 檔名”檢視檔案發現每行結尾多了“^M”這樣的結尾。

根源

通過查詢得知,其問題根源是windows和linux換行符不同造成,二者區別如下表(外加了mac book)

  windows linux MacBook
換行符 \r\n \n \r
ASCII 0x0d0a 0x0a 0x0d

  其中:

  • "\r"在ASCII中表示“換行(LF)”
  • "\n"在ASCII中表示“回車(CR)”

解決

注:主要在linux中解決由於檔案結尾產生的錯誤

1、確認程式碼無誤

2、利用命令“vi -b [filename] ”檢視結尾是否多了“^M”

3、檔案格式轉換

  • 方式一:dos2unix
    • 下載並安裝dos2unix
    • 利用命令“dos2unix [filename]”完成轉換

 

  • 方式二:替換(vim+正則表示式)
    • 利用命令“vim -b [filename]”開啟該檔案
    • 在命令模式下輸入:“%s/^M//g”或者“g/\^M/s/\^M//”
    • 儲存並退出

注意:方式二中“^M”的輸入方式:ctrl+v+m