如何在 Unix 和 DOS 格式之間轉換文字檔案

夢共裡醉發表於2022-01-09
本文介紹如何在 Unix 和 DOS 格式之間轉換文字檔案。DOS 文字檔案帶有回車符( \r )和換行符( \n )作為它們的換行符,而 Unix 文字檔案只有( \n )換行符作為換行符。

有多種方法可以將 DOS 文字檔案轉換為 Unix 格式。但建議使用一個名為 dos2unix / unix2dos 的工具在 DOS 和 Unix 格式之間轉換文字檔案。

  • dos2unix:
  • unix2dos:
  • tr, awk, sed:

你可以使用 od 識別檔案是 DOS 格式還是 Unix 格式,如下所示。

news.163.com/17/1212/09/D5EQJ2A400014AEE.html

news.163.com/17/0606/10/CM89AAKB00018AOP.html

[root@server1 ~]# od -bc windows.txt 
0000000 141 163 144 154 146 152 015 012 141 163 144 146 141 163 144 146
          a   s   d   l   f   j  \r  \n   a   s   d   f   a   s   d   f
0000020 015 012 141 163 147 146 015 012 141 163 144 146 015 012 141 163
         \r  \n   a   s   g   f  \r  \n   a   s   d   f  \r  \n   a   s
0000040 144 146 015 012 141 163 144 146 147 144 015 012 144 147
          d   f  \r  \n   a   s   d   f   g   d  \r  \n   d   g
0000056

如何在 Unix 和 DOS 格式之間轉換文字檔案如何在 Unix 和 DOS 格式之間轉換文字檔案
上面的輸出表示這是一個 DOS 格式的檔案,因為它包含了 \r\n
如何在 Unix 和 DOS 格式之間轉換文字檔案如何在 Unix 和 DOS 格式之間轉換文字檔案

如何在   上安裝 dos2unix

中安裝dos2unix:

[root@server1 ~]# yum -y install dos2unix

Ubuntu中安裝dos2unix:

$ sudo apt install dos2unix
如何將 DOS 檔案轉換為 UNIX 格式

以下 將“windows.txt”檔案從 DOS 格式轉換為 Unix 格式。這個檔案的修改就是把檔案每一行的“\r”去掉。

[root@server1 ~]# dos2unix windows.txt 
dos2unix: converting file windows.txt to Unix format...

使用 dos2unix命令將覆蓋原始檔案。

使用 od命令檢視,可以看到 \r\n已經轉換為 \n了。
如何在 Unix 和 DOS 格式之間轉換文字檔案如何在 Unix 和 DOS 格式之間轉換文字檔案
如果要保留原始檔案,請使用以下命令。這會將轉換後的輸出儲存為新檔案:

[root@server1 ~]# dos2unix -n windows.txt unix.txt
dos2unix: converting file windows.txt to file unix.txt in Unix format...

如何在 Unix 和 DOS 格式之間轉換文字檔案如何在 Unix 和 DOS 格式之間轉換文字檔案

如何使用 tr 命令將 DOS 檔案轉換為 UNIX 格式

可以使用  tr 命令將 DOS 檔案轉換為 Unix 格式,如下所示:

[root@server1 ~]# tr -d '\r' < windows.txt > unix.txt

上面命令使用 -d選項刪除 \r回車符。
如何在 Unix 和 DOS 格式之間轉換文字檔案如何在 Unix 和 DOS 格式之間轉換文字檔案
注意:不能使用  tr 命令將檔案從 Unix 格式轉換為 DOS 格式。

如何使用 awk 命令將 DOS 檔案轉換為 UNIX 格式

以下使用  awk 命令格式將 DOS 檔案轉換為 Unix 格式:

[root@server1 ~]# awk '{ sub("\r$", ""); print }' windows.txt > unix.txt

如何在 Unix 和 DOS 格式之間轉換文字檔案如何在 Unix 和 DOS 格式之間轉換文字檔案
上面命令使用awk命令的sub()函式,將以\r結尾的替換為空。

如何將 UNIX 檔案轉換為 DOS 格式

當將檔案從 UNIX 轉換為 DOS 格式時,它會在每一行中新增一個回車符( \r )。

[root@server1 ~]# unix2dos unix.txt

如何在 Unix 和 DOS 格式之間轉換文字檔案如何在 Unix 和 DOS 格式之間轉換文字檔案
上面命令操作之後,可以看到將unix格式的轉換成dos格式了。

如果需要保留原檔案,可以使用 -n選項。

[root@server1 ~]# unix2dos -n unix.txt windows.txt 
unix2dos: converting file unix.txt to file windows.txt in DOS format...
如何使用 awk 命令將 UNIX 檔案轉換為 DOS 格式

以下使用 awk 命令將 UNIX 檔案轉換為 DOS 格式。下面使用 awk 命令將“unix.txt”檔案轉換為 DOS 格式檔案“windows.txt”。

[root@server1 ~]# awk 'sub("$", "\r")' unix.txt > windows.txt

如何在 Unix 和 DOS 格式之間轉換文字檔案如何在 Unix 和 DOS 格式之間轉換文字檔案

總結

本文介紹如何在 Unix 和 DOS 格式之間轉換文字檔案。


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

相關文章