[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,755 次)