搞清楚換行和回車

參考

阮一峯的網絡日誌/回車和換行
Windows和Linux 行尾符(EndOfLine)的區別
linux下刪除文本中所有空行的幾種方法

歷史

  • “回車”:carriage return,簡寫爲CR,符號\r,原始含義爲把打印頭定位在左邊界(不下移)
  • “換行”:line feed,簡寫爲LF,符號\n,原始含義爲把打印頭向下移一行(其實是把紙向上移一行)

在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鐘可以打10個字符。但是它有一個問題,就是打完一行換行的時候,要用去0.2秒,正好可以打兩個字符。要是在這0.2秒裏面,又有新的字符傳過來,那麼這個字符將丟失。

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字符。一個叫做"回車",告訴打字機把打印頭定位在左邊界;另一個叫做"換行",告訴打字機把紙向上移一行。

這就是"換行"和"回車"的來歷,從它們的英語名字上也可以看出一二。

不同操作系統

  • Unix系統裏,每行結尾只有"<換行>",即"\n"
  • Windows系統裏面,每行結尾是"<回車><換行>",即"\r\n"
  • Mac系統裏,每行結尾是"<回車>",即"\r",後來又改成和Unix系統一致了。

證據:看看pycharm中的小圖標(順便在編輯python代碼時注意這個點):Alt
一個直接後果是,Unix/Mac系統下的文件在Windows裏打開的話,所有文字會變成一行;而Windows裏的文件在Unix/Mac下打開的話,在每行的結尾可能會多出一個^M符號。

證據:做個小實驗吧!

  1. 在ubuntu上建一個test.txt爲(vim打開)
    Alt

  2. 拉到windows下,使用文本編輯器打開爲
    Alt
    使用notepad++打開的話爲(注意調整視圖:視圖->顯示符號->顯示所有字符)
    Alt

  3. 在windows建一個文件test2.txt,用文本編輯器打開爲
    Alt
    使用notepad++打開爲
    Alt
    (這裏還多了LF空行!)

  4. 移動到ubuntu上,使用vim打開爲
    Alt

文檔格式轉化

  • 在windows上,將unix文本轉化爲windows文本格式:
    用test.txt做實驗,使用notepad++打開,然後選擇

    編輯->文檔格式轉換->轉爲Windows(CR LF)

    顯示爲
    在這裏插入圖片描述

  • 在unix上,將windows文本文件轉化爲unxi格式
    dos2unix test2.txt
    Alt
    可選方法: 使用sed來做這個事情:sed -i 's/.$//g' test2.txt (刪除末尾符號)再用vim打開爲
    Alt
    空行還是在!再使用sed -i '/^\s*$/d' test2.txt,再用vim打開就好了
    Alt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章