linux下更改檔案的編碼dos和unix

2021-06-13 22:57:27 字數 2053 閱讀 6187

1. vi編輯器中轉換

在vi中使用命令 set ff?(fileformat)可以檢視檔案的格式,使用set ff=dos(unix)可以設定檔案的格式

2.使用sed處理(來至

tag:linux sed 正則 替換

dos/windows和linux/unix的檔案換行回車格式不同,基於 dos/windows 的文字檔案在每一行末尾有乙個 cr(回車)和 lf(換行),而 unix 文字只有乙個換行。 

1)把dos/windows下的檔案移至linux/unix系統

雖然很多程式不在乎 dos/windows 格式的 cr/lf 文字檔案,但是有幾個程式卻在乎 -- 最著名的是 bash,只要一遇到回車,它就會出問題。以下 sed 呼叫將把 dos/windows 格式的文字轉換成可信賴的 unix 格式:

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

把每行的最後乙個字元替換成空

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

把每行的最後乙個字元替換成abc

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

2)把linux/unix 文字移至 windows 系統,使用以下指令碼執行必需的格式轉換:

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

在每行的末尾新增\r

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

每行以123結尾的行,把123替換成345

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

dos檔案格式如何轉換成unix檔案格式

dos格式檔案傳輸到unix系統時,會在每行的結尾多乙個^m,當然也有可能看不到,但是在vi的時候,會在下面顯示此檔案的格式,比如 "dos.txt" [dos] 120l, 2532c 字樣,表示是乙個[dos]格式檔案,如果是mac系統的,會顯示[mac],因為檔案格式的原因有時會導致我們的unix程式,或者shell程式出現錯誤,那麼需要把這些dos檔案格式轉換成unix格式,方法是 

vi  dos.txt        

:set fileformat=unix 

:w                 

這樣檔案就轉換成unix格式檔案了, 一般在windows機器上編寫好了檔案傳到unix下就可能會出現這樣的情況. 

用命令:set ff? 

可以看到dos或unix的字樣. 

用:set ff=unix把它強制為unix格式    

也可以用sed 這樣的工具來做: 

sed 's/^m//' filename > tmp_filename 

其中^m是同時ctrl+v+m按出來的,表示回車。

dos,unix格式處理的差別:dos是回車+換行,而在unix下,只有回車,無換行!

sed -e 's/a/a/' t.txt > t1.txt  將t.txt中每行的第乙個a轉成a

sed -e 's/a/a/g' t.txt > t1.txt  將t.txt中每行的所有a轉成a

3)如何把windows和unix格式混合的檔案,變得都是unix格式的

sed -e 's/\r//g' window.txt  > unix.txt

linux下的檔案編碼,vim編碼

vim公升級7.3版本後vim總是會出現莫名其妙的問題。比如vim開啟檔案時正常開啟,而vi呢會報這個問題,奇怪。這個特徵的確是vim7.3才能用set colorcolumn的 vi zz error detected while processing home fdafd vimrc line ...

在Linux如何讓更改檔案的字元編碼

問題 在我的 linux 系統中有乙個編碼為 iso 8859 1 的字幕檔案,其中部分字元無法正常顯示,我想把文字改為 utf8 編碼。在 linux 中,有沒有乙個好的工具來轉換文字檔案的字元編碼?正如我們所知道的那樣,電腦只能夠處理低階的二進位制值,並不能直接處理字元。當乙個文字檔案被儲存時,...

Ubuntu環境下基於Linux進行DOL配置

進入ubuntu下,開啟終端,依次輸入以下指令 sudo apt get update sudo apt get install ant sudo apt get install openjdk 7 jdk sudo apt get install unzip 安裝及更新有時會比較慢,主要是由於網速...