DOS/Windows和Linux/Unix間檔案格式轉換

helloxchen發表於2010-12-06

如何在Linux/Unix中轉換windows文字檔案的回車符

由於windows文字檔案的回車符通常是2個字元構成的,回車和換行,對應ASCII是0D,0A。如何將之轉換成Linux/Unix檔案系統中的換行符呢?下面介紹2個簡單的方法(一般0D 0A構成的換行在Linux/Unix中會顯示顯示^M,我們只需要將之去掉就可以了)
1. 用sed命令替換
sed -e 's/^M//g' original.txt > target.txt (注意^M 在Linux/Unix下是這樣輸入的:先按CTRL+v,接著按CTRL+SHIFT+m,呵呵~~ 其實俺主要就是為了記錄一下這個輸入方法)
2. 在vi中替換
:%s/^M//g

DOS/ 和Linux/Unix的檔案換行回車格式不同,基於 DOS/的文字檔案在每一行末尾有一個 CR (回車)和 LF (換行),而 UNIX 文字只有一個換行

<wbr> <wbr> <wbr> 1 )、把Dos/Windows 下的檔案移至Linux/Unix系統

<wbr> <wbr> <wbr> 雖然很多程式不在乎 DOS/Windows格式的 CR/LF文字檔案,但是有幾個程式卻在乎——最著名的是 bash ,只要一遇到回車,它就會出問題。以下 sed呼叫將把 DOS/Windows格式的文字轉換成可信賴的 UNIX 格式:

<wbr> <wbr> <wbr> $ sed -e 's/.$//' mydos.txt > myunix.txt

<wbr> <wbr> <wbr> 該指令碼的工作原理很簡單:替代規則表示式與一行的最末字元匹配,而該字元恰好就是回車。我們用空字元替換它,從而將其從輸出中徹底刪除。如果使用該指令碼並 注意到已經刪除了輸出中每行的最末字元,那麼,您就指定了已經是 UNIX格式的文字檔案。也就沒必要那樣做了!

<wbr> <wbr> <wbr> 2 )、把Linux/UNIX文字移至 Windows系統,使用以下指令碼執行必需的格式轉換:

<wbr> <wbr> <wbr> $ sed -e 's/$/r/' myunix.txt > mydos.txt

<wbr> <wbr> <wbr> 在該指令碼中,'$' 規則表示式將與行的末尾匹配,而 'r' 告訴 sed在其之前插入一個回車。在換行之前插入回車,立即,每一行就以 CR/LF結束。請注意,僅當使用 GNU sed 3.02.80或以後的版本時,才會用 CR 替換 'r'.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24790158/viewspace-1042673/,如需轉載,請註明出處,否則將追究法律責任。

相關文章