DOS/Windows和Linux/Unix間的文件格式轉換

作無線傳感器網絡本身生產拓撲的時候一直碰到看起來相同的文件被解析成拓撲的時候卻不一樣,一直摸不清緣由,竟然是這個問題,還好看見了這篇文章。bash

DOS/Windows和Linux/Unix的文件換行回車格式不一樣,基於 DOS/Windows 的文本文件在每一行末尾有一個 CR(回車)和 LF(換行),而 UNIX 文本只有一個換行。網絡

1)把Dos/Windows下的文件移至Linux/Unix系統spa

雖然不少程序不在意 DOS/Windows 格式的 CR/LF 文本文件,可是有幾個程序卻在意 -- 最著名的是 bash,只要一遇到回車,它就會出問題。如下 sed 調用將把 DOS/Windows 格式的文本轉換成可信賴的 UNIX 格式:unix

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

該腳本的工做原理很簡單:替代規則表達式與一行的最末字符匹配,而該字符剛好就是回車。咱們用空字符替換它,從而將其從輸出中完全刪除。若是使用該腳本並注意到已經刪除了輸出中每行的最末字符,那麼,您就指定了已是 UNIX 格式的文本文件。也就不必那樣作了!it

2)把Linux/UNIX 文本移至 Windows 系統,使用如下腳本執行必需的格式轉換:原理

$ sed -e 's/$/\r/' myunix.txt > mydos.txtsed

在該腳本中,'$' 規則表達式將與行的末尾匹配,而 '\r' 告訴 sed 在其以前插入一個回車。在換行以前插入回車,當即,每一行就以 CR/LF 結束。請注意,僅當使用 GNU sed 3.02.80 或之後的版本時,纔會用 CR 替換 '\r'。程序

相關文章
相關標籤/搜索