操作方法:UNIX / Linux 将 DOS 换行符 CR-LF 转换为 Unix/Linux 格式
要在 DOS 和 Unix 格式之间转换文本文件,您需要使用名为 dos2unix 的特殊实用程序。DOS 文本文件通常以回车符和换行符作为换行符,而 Unix 文本文件则以换行符作为换行符。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Unix 上的 dos2unix、sed 和 tr/perl |
预计阅读时间 | 3 分钟 |
UNIX/Linux 命令
您可以使用以下工具:- dos2unix(也称为 fromdos)——将文本文件从 DOS 格式转换为 Unix
格式 - unix2dos(也称为 todos)——将文本文件从 Unix 格式转换为 DOS 格式。
- sed – 您可以使用 sed 命令实现相同目的
- tr 命令
- Perl 一行程序
将 DOS 文件转换为 UNIX 格式
键入以下命令来转换名为 myfile.txt 的文件:
$ dos2unix myfile.txt
但是,上述命令不会备份原始文件 myfile.txt。我们使用新的文件模式。转换文件 input.txt 并将输出写入文件 output.txt。文件名必须成对给出,并且不应使用通配符名称,否则您将丢失文件。因此,这是您保留原始文件的方法:
$ dos2unix -n input.txt output.txt
$ dos2unix --newfile input.txt output.txt
将 UNIX 文件转换为 DOS 格式
键入以下命令来转换名为 myfile.txt 的文件:
$ unix2dos myfile.txt
$ unix2dos -b myfile.txt
如何在 Unix 或 Linux 中查看回车符和其他特殊字符
od 命令的语法如下:
我们也可以使用cat 命令
od -c filename
od -c myfile.txt
cat -v /prod/apps/router.php
任务:使用tr 命令将 Dos 转换为 Unix
键入以下命令:
tr -d '\r' < input.file > output.file
任务:使用Perl One Liner将 Dos 转换为 Unix
键入以下命令:
perl -pi -e 's/\r\n/\n/g' input.file
任务:使用sed 命令将 UNIX 格式转换为 DOS 格式
如果您使用 bash shell,请键入以下命令:
$ sed 's/$'"/`echo \\\r`/" input.txt > output.txt
要使用^Msed 命令删除回车符 (CR):
# GNU/sed syntax to update file in-place sed -i 's/\r$//g' input # macOS/*BSD syntax to update file in-place sed -i'.BAK' 's/\r$//g' input sed "s/$(printf '\r')\$//" in.txt > out.txt sed -i'BAK' "s/$(printf '\r')\$//" in.txt
sed 版本可能无法在不同的 UNIX/Linux 版本下工作,有关更多信息,请参阅Linux 或 Unix 上的 sed 删除/删除 ^M 回车符(换行符/CRLF) 。
任务:使用sed 命令将 DOS 换行符(CR/LF)转换为 Unix 格式
如果您使用 BASH shell,请输入以下命令(按 Ctrl-V,然后按 Ctrl-M 获取模式或特殊符号)
$ sed 's/^M$//' input.txt > output.txt
注意:sed 版本可能无法在不同的 UNIX/Linux 版本下工作,请参阅您当地的 sed 手册页以获取更多信息。