Text-Processing
從 Windows 到 Unix 的 FTP 後附加的腳本中刪除特殊模式 ^M
我使用 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