如何在 Bash 指令碼中將 DOS/Windows 換行符 (CRLF) 轉換為 Unix 換行符 (LF)?


當我們在 Windows 和 Unix 系統之間傳輸檔案時,通常會遇到與行尾字元相關的問題。這是因為 Windows 中的 EOL 字元在 Unix 中不被識別為 EOL 字元。因此,為了解決此問題,當檔案從 Windows 傳輸到 Unix 時,我們需要遵循以下方法之一。

使用 dos2unix

dos2unix 命令用於將 Windows 平臺的 EOL 字元轉換為 Unix 平臺的 EOL 字元。大多數 Unix 系統都預裝了此命令。下面我們來看看如何轉換檔案本身或在使用此命令時儲存檔案的副本。

# change the file itself.
dos2unix file_name.txt
# Save a copy of the file.
dos2unix -n file_name.txt new_file_name.txt

使用 sed

當我們將檔案從 Windows 傳輸到 Unix 平臺並開啟讀取時,行尾字元顯示為 ^M(稱為控制-M)。因此,我們使用 **sed** 命令替換 ^M 字元。在這裡,我們也可以將編輯後的檔案另存為新檔案。

sed 's/^M$//' file_name.txt > new_file_name.txt

使用 tr

tr 命令用於轉換或刪除字元。在這種情況下,我們將使用它來刪除 Windows 系統檔案中行尾字元,如果在 Unix 系統中開啟時顯示為 â\râ。

tr -d '\r' file_name.txt > new_file_name.txt

上述命令執行成功後,我們就可以在 Unix 系統中成功開啟檔案,而不會顯示來自 Windows 系統的 EO L 值。

更新於: 2020年1月3日

2K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.