[Linux] 用 sed 將 Windows line ending 都改成 Unix line ending

[Linux] 用 sed 將 Windows line ending 都改成 Unix line ending

我們專案因為是跑在 Linux 上,因此原始碼的 Line ending 通常是採用 Unix 格式,

也就是 LF (0a),不像 Windows 用的 CR LF (0d 0a)~

不過今天同事給了我一堆 Windows line ending 的檔案,

直接放到檔案庫的話,檔案差異度太多 (每行都改);

要手動修改的話,Sublime Text 是可以用 View > Line Endings > Unix 來改,

但改一堆檔案的話可就累死了…

 

決定還是用 sed 來搞定這件事,執行下面的指令,

就能將目前目錄下所有檔案的 line ending 都從 Windows 改成 Linux 格式:

sed -i "s/^M$//" *

 

要注意那個 ^M 並不是打出鍵盤上的 ^ 和 M 兩個字元,

而是要按下 Ctrl-V 接著 Ctrl-M 跑出來的,代表的是 Windows 格式的 line ending 喔~

 

參考資料:How to convert DOS/Windows newline (CRLF) to Unix newline (\n) in bash script?

 

(本頁面已被瀏覽過 1,707 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料