本文介紹在Linux系統上安裝dos2unix的方法,和使用dos2unix及unix2dos在DOS(Windows)和Unix格式之間轉換文本文件。

前言

作為Linux管理員,您可能已經注意到開發人員提出的一些將文件從DOS格式轉換為Unix格式的請求,這是因為這些文件是由於某種原因在Windows系統上創建並複製到Linux系統的。不過Linux系統上的某些應用程序可能不理解這些新的字符行,因此您需要在使用前進行轉換。

DOS文本文件帶有回車符(CR或\r)和換行符(LF或\n)對作為換行符,而Unix文本文件僅將換行符作為換行符。

您可以通過多種方式將DOS文本文件轉換為Unix格式。但是我建議使用一個名為dos2unix/unix2dos的特殊實用程序在DOS和Unix格式之間轉換文本文件。

dos2unix:將文本文件從DOS格式轉換為Unix格式。

unix2dos:將文本文件從Unix格式轉換為DOS格式。

另外,tr、awk和sed命令:這些命令可用於相同目的。

您可以使用od(八進制轉儲)命令輕鬆地確定文件是DOS格式還是Unix格式,如下所示:

# od -bc windows.txt

返回如下圖信息:


上面的輸出清楚地表明這是DOS格式的文件,因為它包含轉義序列\r\n。

同時,在終端上打印文件輸出時,運行cat windows.txt命令將獲得以下輸出:

# cat windows.txt

Unix is a free opensource operating system

Super computers are running on UNIX

95% of websites are running on Linux OS

Anything can be done on Linux

在Linux上安裝dos2unix的方法

可以從發行官方存儲庫中輕鬆安裝dos2unix。

對於RHEL、CentOS 6/7系統,請使用yum命令安裝dos2unix:

$ sudo yum install -y dos2unix

對於RHEL、CentOS 8和Fedora系統,使用dnf命令安裝dos2unix:

$ sudo yum install -y dos2unix

對於基於Debian的系統,請使用apt命令或apt-get命令安裝dos2unix:

$ sudo apt-get update

$ sudo apt-get install dos2unix

對於openSUSE系統,請使用zypper命令安裝dos2unix:

$ sudo zypper install -y dos2unix

1、如何將DOS文件轉換為UNIX格式

以下命令將“windows.txt”文件從DOS轉換為Unix格式。

該文件的修改是從文件的每一行中刪除“\r”:

# dos2unix windows.txt

返回如下信息:

dos2unix: converting file windows.txt to Unix format …

運行以下命令:

# cat windows.txt

返回如下圖信息:


上面的命令將覆蓋原始文件。

如果要保留原始文件,請使用以下命令,這會將轉換後的輸出另存為新文件:

# dos2unix -n windows.txt unix.txt

返回如下信息:

dos2unix: converting file windows.txt to file unix.txt in Unix format …

1]、如何使用tr命令將DOS文件轉換為UNIX格式

如本文開頭所述,您可以使用tr命令將DOS文件轉換為Unix格式,如下所示:

Syntax: tr -d '\r' < source_file > output_file

下面的tr命令將“windows.txt” DOS文件轉換為Unix格式的文件“unix.txt”:

# tr -d '\r' < windows.txt >unix.txt

注意:您不能使用tr命令將文件從Unix格式轉換為Windows(DOS)。

2]、如何使用awk命令將DOS文件轉換為UNIX格式

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

Syntax: awk '{ sub("\r$", ""); print }' source_file.txt > output_file.txt

下面的awk命令將“windows.txt” DOS文件轉換為Unix格式的文件“unix.txt”:

# awk '{ sub("\r$", ""); print }' windows.txt > unix.txt

2、如何將UNIX文件轉換為DOS格式

當您將文件從UNIX轉換為DOS格式時,它將在每行中添加一個回車符(CR或\r):

# unix2dos unix.txt

返回如下信息:

unix2dos: converting file unix.txt to DOS format …

此命令將保留原始文件:

# unix2dos -n unix.txt windows.txt

返回如下信息:

unix2dos: converting file unix.txt to file windows.txt in DOS format …

下面將介紹如何使用awk命令將UNIX文件轉換為DOS格式。

使用以下awk命令格式將UNIX文件轉換為DOS格式:

Syntax: awk 'sub("$", "\r")' source_file.txt > output_file.txt

下面的awk命令將“unix.txt”文件轉換為DOS格式文件“windows.txt”:

# awk 'sub("$", "\r")' unix.txt > windows.txt