關於linux下的文字檔案格式轉換問題

時間 2021-07-12 15:34:45

1樓:

這個獲取第4列:

awk '' a.txt

這個輸出:第1列[ ]第4列[ ]第5列 - (中間是tab相隔)

awk '' a.txt

cut 預設以tab鍵為欄位分隔符,從man page中的這句話可以看出:

-d, --delimiter=delim

use delim instead of tab for field delimiter

awk 則不區分tab還是空格,其 man page中有如下描述:

fields ...... in the special case that fs is a single space, fields are separated by runs of spaces and/or tabs and/or newlines. ......

fs the input field separator, a space by default. see fields, above.

2樓:匿名使用者

linux下文字檔案格式轉換有不同情景:

如果你需要在linux 中操作windows下的檔案,那麼你可能會經常遇到檔案編碼轉換的問題。windows中預設的檔案格式是gbk(gb2312),而linux一般都是utf-8。下面介紹一下,在linux中如何檢視檔案的編碼及如何進行對檔案進行編碼轉換。

檢視檔案編碼

在linux中檢視檔案編碼可以通過以下幾種方式:

1.在vim 中可以直接檢視檔案編碼

shell**

:set fileencoding

即可顯示檔案編碼格式。

如果你只是想檢視其它編碼格式的檔案或者想解決用vim檢視檔案亂碼的問題,那麼你可以在

~/.vimrc 檔案中新增以下內容:

shell**

set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

這樣,就可以讓vim自動識別檔案編碼(可以自動識別utf-8或者gbk編碼的檔案),其實就是依照 fileencodings提供的編碼列表嘗試,如果沒有找到合適的編碼,就用latin-1(ascii)編碼開啟。

2. enca (如果你的系統中沒有安裝這個命令,可以用sudo yum install -y enca 安裝 )檢視檔案編碼

$ enca filename

filename: universal transformation format 8 bits; utf-8

crlf line terminators

需要說明一點的是,enca對某些gbk編碼的檔案識別的不是很好,識別時會出現:

unrecognized encoding

檔案編碼轉換

1.在vim中直接進行轉換檔案編碼,比如將一個檔案轉換成utf-8格式

shell**

:set fileencoding=utf-8

2. enconv 轉換檔案編碼,比如要將一個gbk編碼的檔案轉換成utf-8編碼,操作如下

enconv -l zh_cn -x utf-8 filename

3. iconv 轉換,iconv的命令格式如下:

iconv -f encoding -t encoding inputfile

比如將一個utf-8 編碼的檔案轉換成gbk編碼

iconv -f gbk -t utf-8 file1 -o file2

3樓:

awk '' a.txt

windows的文字檔案如何轉換成linux的文字檔案?

4樓:體育放蕩不羈愛社會

使用linux系統中自帶的流文字編輯器sed/dos/windows和linux/unix的檔案換行回車格式不同, 基於 dos/windows 的文字檔案在每一行末尾有一個cr(回車)和lf(換行),而 unix 文字只有一個換行。

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

把linux/unix 文字移至 windows 系統,使用以下指令碼執行必需的格式轉換:在該指令碼中,規則表示式將與行的末尾匹配,'\r' 使 sed 在其之前插入一個回車。在換行之前插入回車。

sublime text 怎麼轉換windows linux文字檔案的格式

5樓:盤默

最近使用ubuntu linux發現,windows 下的文字到linux下可以正常的瀏覽,但是linux下的文字到windows下後發現凡是「回車」部分全是「黑塊」,經過一段時間的查詢搜尋發現了原因及解決辦法:

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

該指令碼的工作原理很簡單:替代規則表示式與一行的最末字元匹配,而該字元恰好就是回車。我們用空字元替換它,從而將其從輸出中徹底刪除。

如果使用該指令碼並注意到已經刪除了輸出中每行的最末字元,那麼,您就指定了已經是 unix 格式的文字檔案。也就沒必要那樣做了!

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

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

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

02.80 或以後的版本時,才會用 cr 替換 '\r'。

另外還有個方法:

使用命令

unix2dos filename

dos2unix filename

互相轉換,具體朝哪個方向轉不用我詳細說了吧。

關於linux下開啟windows文字檔案亂碼的問題

0002 windows程式出現亂碼的解決方案之一。linux開啟windows亂碼的問題 windows下檔案已經是utf8編碼了 windows下的檔案在linux下顯示為亂碼 是因為檔案格式的問題,windows系統是fat型別和ntfs的檔案格式,linux是ext32型別的檔案格式,檔案格...

求c語言讀取寫入文字檔案的函式實現

go陌小潔 c語言標準庫提供了一系列檔案i o函式用於檔案操作,比如fopen 用於開啟檔案 fread fwrite 用於讀寫檔案 fseek 用於設定操作位置等等,一般c語言教程上都有檔案i o一章,細緻內容,可以找本教科書學習一下。下面的示例,是向名為1.txt的檔案附加hello world...

vb替換文字,vb替換文字檔案中指定的內容

1全部if dir 檔案路徑 then 如檔案不存在 不返回值 所以是 空白 msgbox 不存在 else shell regedit.exe s c del.reg end if vb檢查檔案是否存在,可使用 if dir strpathfilename then 就行了 else 執行shel...