如何在Unix和Windows文本文件之间转换

时间:2020-01-09 10:37:49  来源:igfitidea点击:

如何在Unix和Windows文本文件之间转换换行符[换行符或行尾(EOL)字符]?
换行符充当所有文本文件的行尾。
它是一个特殊字符,在Windows和UNIX操作系统下,此字符的格式略有不同。
用于显示换行符的实际代码在oses之间有所不同,如下所示:

  • 对于在MS-Windows操作系统上创建的所有文本文件,几乎所有的Unix命令和文本编辑器都可能在每行末尾显示Ctrl-m(^ M)字符的EOL。
  • MS-Windows可能不会显示在UNIX操作系统上创建的所有文本文件的换行或EOL。

选项#1:dos2unix和unix2dos命令

您可以按以下方式使用dos2unix和unix2dos。
要将UNIX文件的换行符转换为MS-Windows,请执行:

$ cat -v input.txt
$ unix2dos input.txt output.txt
$ cat -v output.txt
$ vi output.txt

要将MS-Windows文件的换行符转换为Unix文件,请执行:

$ cat -v input.txt
$ dos2unix input.txt output.txt
$ cat -v output.txt

选项2:awk命令

您可以使用awk命令将MS-Windows文件转换为Unix格式,执行:

$ cat -v input.txt
$ awk '{ sub("\r$", ""); print }' input.txt > output.txt
$ cat -v output.txt

您可以将Unix文件的换行符转换为MS-Windows格式,输入:

$ cat -v input.txt
$ awk 'sub("$", "\r")' input.txt > output.txt
$ cat -v output.txt

请注意,带有-v选项的cat命令用于显示所有非打印字符,例如^和Mnotation,但LFD和TAB除外。