在使用Notepad++、UE、Vim等編輯器時,一般都會顯示或指定文本文件的類型,即DOS/UNIX/MAC。
那么這3種類型有什么區別呢?
區別就是換行符,即:
-
DOS或Windows使用回車+ 換行(CR+LF)表示下一行(亦即所謂的PC格式,誰讓MS最早雄踞PC市場呢,_);
-
UNIX或Linux采用換行符(LF)表示下一行;
-
MAC采用回車符(CR)表示下一行。
為什么會有這種差別呢?
很久以前,人們用老式的電傳打字機作為輸入設備,它使用兩個字符來另起新行。一個字符把滑動架移回首位 (稱為回車),另一個字符把紙上移一行 (稱為換行)。
當計算機問世后,由於存儲器曾經非常昂貴。有些人就認定沒必要用兩個字符來表示行尾。於是UNIX 開發者決定他們可以用一個字符(LF)來表示行尾。Apple 開發者規定了用 (CR)來表示行尾。開發 MS-DOS (以及微軟視窗) 的那些家伙則決定沿用老式的兩個字符 。
CR/LF 具體又是哪個字符呢?
在二級制編輯模式下,可以看到CR字符是0D
,LF字符是0A
。
在Python等編程語言中,一般使用\r
表示CR字符,使用\n
表示LF字符。
如何在3種文件類型中轉換呢?
方法一:使用Notepad++、UE等強大的編輯器,選擇相應的操作選項進行轉換。
以Notepad++為例,“編輯-文檔格式轉換”,即可轉換到其他格式。
方法二:在Unix或Linux系統上,可以使用dos2unix或unix2dos工具轉換。
軟件安裝,在CentOS上使用yum安裝,yum install -y dos2unix;在Ubuntu上,軟件名稱變更為tofrodos,sudo apt install tofrodos,實際上會安裝兩個工具:todos(相當於unix2dos),和fromdos(相當於dos2unix)。
方法三:使用sed或tr工具
sed 's/^M//' filename > tmp_filename
其中^M是同時Ctrl+V Ctrl+M按出來的,表示回車
tr -d "\r" filename
附錄
ASCII碼表