Text-Processing

從 Windows 到 Unix 的 FTP 後附加的腳本中刪除特殊模式 ^M

  • October 17, 2019

我使用 FTP 將 Windows 文件發送到 Unix 系統,並在^M任何需要換行的地方附加,我只想刪除它們。

我可以選擇的一種方法是執行dos2unix命令。

誰能建議另一種方法,例如sed命令來刪除此類模式?

Windows 行結尾由兩個字元序列 CR、LF 組成。CR 是輸入符,有時表示為\r\015^M等。Unix 行尾只是 LF 字元。

僅使用所有 Unix 變體上存在的標準實用程序將 Windows 行尾轉換為 Unix 行尾的一種方法是使用該tr實用程序。

tr -d '\r' <thefile >thefile.new && mv thefile.new thefile

如果文件已經有 Unix 行結尾,則其內容不會改變。

如果目前目錄中有許多文件要轉換,則可以使用循環。假設您沒有任何名稱以 結尾的文件.new

for x in *; do
 tr -d '\r' <"$x" >"$x.new" && mv "$x.new" "$x"
done

在 Linux(不包括一些嵌入式 Linux 系統)或 Cygwin 下,可以使用sed. 就地編輯文件的-i選項特定於這些系統。CR 字元的表示法\r更為普遍,但並不普遍。

sed -i -e 's/\r//g' thefile

引用自:https://unix.stackexchange.com/questions/203151