这篇文章将为大家详细讲解有关怎么将文本文件在Unix和DOS格式之间转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
作为一名 Linux 管理员,你可能已经注意到了一些开发者请求将文件从 DOS 格式转换为 Unix 格式,反之亦然。
这是因为这些文件是在 Windows 系统上创建的,并由于某种原因被复制到 Linux 系统上。
这本身没什么问题,但 Linux 系统上的一些应用可能不能理解这些新的换行符,所以在使用之前,你需要转换它们。
DOS 文本文件带有回车(CR
或 \r
)和换行(LF
或 \n
)一对字符作为它们的换行符,而 Unix 文本只有换行(LF
)符。
有很多方法可以将 DOS 文本文件转换为 Unix 格式。
但我推荐使用一个名为 dos2unix
/ unix2dos
的特殊工具将文本在 DOS 和 Unix 格式之间转换。
dos2unix
:将文本文件从 DOS 格式转换为 Unix 格式。
unix2dos
:将文本文件从 Unix 格式转换为 DOS 格式。
tr
、awk
和 sed 命令:这些可以用于相同的目的。
使用 od
(八进制转储)命令可以很容易地识别文件是 DOS 格式还是 Unix 格式,如下图所示:
# od -bc windows.txt0000000 125 156 151 170 040 151 163 040 141 040 146 162 145 145 040 157U n i x i s a f r e e o0000020 160 145 156 163 157 165 162 143 145 040 157 160 145 162 141 164p e n s o u r c e o p e r a t0000040 151 156 147 040 163 171 163 164 145 155 015 012 123 165 160 145i n g s y s t e m \r \n S u p e0000060 162 040 143 157 155 160 165 164 145 162 163 040 141 162 145 040r c o m p u t e r s a r e0000100 162 165 156 156 151 156 147 040 157 156 040 125 116 111 130 015r u n n i n g o n U N I X \r0000120 012 071 065 045 040 157 146 040 167 145 142 163 151 164 145 163\n 9 5 % o f w e b s i t e s0000140 040 141 162 145 040 162 165 156 156 151 156 147 040 157 156 040a r e r u n n i n g o n0000160 114 151 156 165 170 040 117 123 015 012 101 156 171 164 150 151L i n u x O S \r \n A n y t h i0000200 156 147 040 143 141 156 040 142 145 040 144 157 156 145 040 157n g c a n b e d o n e o0000220 156 040 114 151 156 165 170 015 012n L i n u x \r \n0000231
上面的输出清楚地表明这是一个 DOS 格式的文件,因为它包含了转义序列 \r\n
。
同时,当你在终端上打印文件输出时,你会得到下面的输出:
# cat windows.txtUnix is a free opensource operating systemSuper computers are running on UNIX95% of websites are running on Linux OSAnything can be done on Linux
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
以下命令将 windows.txt
文件从 DOS 转换为 Unix 格式。
对该文件的修改是删除文件每行的 \r
。
# dos2unix windows.txtdos2unix: converting file windows.txt to Unix format …
# cat windows.txt0000000 125 156 151 170 040 151 163 040 141 040 146 162 145 145 040 157U n i x i s a f r e e o0000020 160 145 156 163 157 165 162 143 145 040 157 160 145 162 141 164p e n s o u r c e o p e r a t0000040 151 156 147 040 163 171 163 164 145 155 012 123 165 160 145 162i n g s y s t e m \n S u p e r0000060 040 143 157 155 160 165 164 145 162 163 040 141 162 145 040 162c o m p u t e r s a r e r0000100 165 156 156 151 156 147 040 157 156 040 125 116 111 130 012 071u n n i n g o n U N I X \n 90000120 065 045 040 157 146 040 167 145 142 163 151 164 145 163 040 1415 % o f w e b s i t e s a0000140 162 145 040 162 165 156 156 151 156 147 040 157 156 040 114 151r e r u n n i n g o n L i0000160 156 165 170 040 117 123 012 101 156 171 164 150 151 156 147 040n u x O S \n A n y t h i n g0000200 143 141 156 040 142 145 040 144 157 156 145 040 157 156 040 114c a n b e d o n e o n L0000220 151 156 165 170 012i n u x \n0000225
上面的命令将覆盖原始文件。
如果你想保留原始文件,请使用以下命令。这将把转换后的输出保存为一个新文件。
# dos2unix -n windows.txt unix.txtdos2unix: converting file windows.txt to file unix.txt in Unix format …
正如文章开头所讨论的,你可以如下所示使用 tr
命令将 DOS 文件转换为 Unix 格式。
Syntax: tr -d '\r' < source_file > output_file
下面的 tr
命令将 DOS 格式的文件 windows.txt
转换为 Unix 格式文件 unix.txt
。
# tr -d '\r' < windows.txt >unix.txt
注意:不能使用 tr
命令将文件从 Unix 格式转换为 Windows(DOS)。
使用以下 awk
命令格式将 DOS 文件转换为 Unix 格式。
Syntax: awk '{ sub("\r$", ""); print }' source_file.txt > output_file.txt
以下 awk
命令将 DOS 文件 windows.txt
转换为 Unix 格式文件 unix.txt
。
# awk '{ sub("\r$", ""); print }' windows.txt > unix.txt
当你把一个文件从 UNIX 转换为 DOS 格式时,它会在每一行中添加一个回车(CR
或 \r
)。
# unix2dos unix.txtunix2dos: converting file unix.txt to DOS format …
该命令将保留原始文件。
# unix2dos -n unix.txt windows.txtunix2dos: converting file unix.txt to file windows.txt in DOS format …
使用以下 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
关于“怎么将文本文件在Unix和DOS格式之间转换”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。