当前位置: 首页 > 科技观察

如何在Unix和DOS(Windows)格式之间转换文本文件

时间:2023-03-16 15:24:50 科技观察

作为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(octaldump)命令可以方便的识别文件是DOS格式还是Unix格式,如下图:#od-bcwindows.txt0000000125156151170040151163040141040146162145145040157Unixisafreeo0000020160145156163157165162143145040157160145162141164pensourceoperat0000040151156147040163171163164145155015012123165160145ingsystem\r\nSupe0000060162040143157155160165164145162163040141162145040rcomputersare0000100162165156156151156147040157156040125116111130015runningonUNIX\r0000120012071065045040157146040167145142163151164145163\n95%ow147040143141156040142145040144157156145040157ng可以在eo00上完成00220156040114151156165170015012nLinux\r\n0000231上面的输出清楚地表明这是一个DOS格式的文件,因为它包含了转义序列\r\n另外,当你在终端上打印文件时输出,你会得到如下输出:#catwindows.txtUnixisafreeopensourceoperatingsystem超级计算机运行在UNIX上95%的网站运行在LinuxOSAAnythingcanbedoneonLinux如何在Linux上安装dos2unix?可以从发行版的官方存储库轻松安装dos2unix。RHEL/CentOS6/7系统,使用yum命令安装dos2unix。$sudoyuminstall-ydos2unix对于RHEL/CentOS8和Fedora系统,使用dnf命令安装dos2unix。$sudoyuminstall-ydos2unix对于基于Debian的系统,使用apt命令或apt-get命令安装dos2unix。$sudoapt-getupdate$sudoapt-getinstalldos2unix对于openSUSE系统,使用zypper命令安装dos2unix。$sudozypperinstall-ydos2unix1)如何将DOS文件转换为UNIX格式?以下命令将windows.txt文件从DOS格式转换为Unix格式。对该文件的修改是删除文件每一行的\r。#dos2unixwindows.txtdos2unix:convertingfilewindows.txttoUnixformat…#catwindows.txt0000000125156151170040151163040141040146162145145040157Unixisafreeo0000020160145156163157165162143145040157160145162141164pensourceoperat0000040151156147040163171163164145155012123165160145162ingsystem\nSuper0000060040143157155160165164145162163040141162145040162computersarer0000100165156156151156147040157156040125116111130012071unningonUNIX\n900001200650450401571460401671451421631511641451630401415%ofwebsitesa0000140162145040162165156156151156147040157156040114151rerunnnnnninli0000160156156165170040117123012101156156164150150151151156156156147040Nuxoxoxos\nnynynynyythinyything0000200143edoneonL0000220151156165170012inux\n0000225上面的命令会覆盖原文件如果要保留原文件,使用下面的命令。这会将转换后的输出保存为一个新文件。#dos2unix-nwindows.txtunix.txtdos2unix:将文件windows.txt转换为Unix格式的文件unix.txt...1a)如何使用tr命令将DOS文件转换为UNIX格式。正如本文开头所讨论的,您可以使用tr命令将DOS文件转换为Unix格式,如下所示。语法:tr-d'\r'output_file下面的tr命令将DOS格式文件windows.txt转换为Unix格式文件unix.txt。#tr-d'\r'unix.txt注意:您不能使用tr命令将文件从Unix格式转换为Windows(DOS)。1b)如何使用awk命令将DOS文件转换为UNIX格式。使用以下awk命令格式将DOS文件转换为Unix格式。语法:awk'{sub("\r$","");print}'source_file.txt>output_file.txt以下awk命令将DOS文件windows.txt转换为Unix格式文件unix.txt。#awk'{sub("\r$","");print}'windows.txt>unix.txt2)如何将UNIX文件转换为DOS格式?当您将文件从UNIX格式转换为DOS格式时,它会向每一行添加一个回车符(CR或\r)。#unix2dosunix.txtunix2dos:convertingfileunix.txttoDOSformat...此命令将保留原始文件。#unix2dos-nunix.txtwindows.txtunix2dos:将文件unix.txt转换为DOS格式的文件windows.txt...2a)如何使用awk命令将UNIX文件转换为DOS格式?使用以下awk命令格式将UNIX文件转换为DOS格式。语法:awk'sub("$","\r")'source_file.txt>output_file.txt下面的awk命令将unix.txt文件转换为DOS格式文件windows.txt。#awk'sub("$","\r")'unix.txt>windows.txt