dos和unix换行符解析

Posted Muen2020

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dos和unix换行符解析相关的知识,希望对你有一定的参考价值。

在使用Notepad++、UE、Vim等编辑器时,一般都会显示或指定文本文件的类型,即DOS/UNIX/MAC。

那么这3种类型有什么区别呢?

区别就是换行符,即:

  • DOS或Windows使用回车+ 换行(CR+LF)表示下一行(亦即所谓的PC格式,谁让MS最早雄踞PC市场呢,_);

  • UNIX或Linux采用换行符(LF)表示下一行;

  • MAC采用回车符(CR)表示下一行。

为什么会有这种差别呢?

很久以前,人们用老式的电传打字机作为输入设备,它使用两个字符来另起新行。一个字符把滑动架移回首位 (称为回车),另一个字符把纸上移一行 (称为换行)。

当计算机问世后,由于存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行尾。于是UNIX 开发者决定他们可以用一个字符(LF)来表示行尾。Apple 开发者规定了用 (CR)来表示行尾。开发 MS-DOS (以及微软视窗) 的那些家伙则决定沿用老式的两个字符 。

CR/LF 具体又是哪个字符呢?

在二级制编辑模式下,可以看到CR字符是0D ,LF字符是0A

在Python等编程语言中,一般使用\\r表示CR字符,使用\\n表示LF字符。

如何在3种文件类型中转换呢?

方法一:使用Notepad++、UE等强大的编辑器,选择相应的操作选项进行转换。

以Notepad++为例,“编辑-文档格式转换”,即可转换到其他格式。

方法二:在Unix或Linux系统上,可以使用dos2unix或unix2dos工具转换。

软件安装,在CentOS上使用yum安装,yum install -y dos2unix;在Ubuntu上,软件名称变更为tofrodos,sudo apt install tofrodos,实际上会安装两个工具:todos(相当于unix2dos),和fromdos(相当于dos2unix)。

方法三:使用sed或tr工具

sed \'s/^M//\' filename > tmp_filename 其中^M是同时Ctrl+V Ctrl+M按出来的,表示回车

tr -d "\\r" filename

附录

ASCII码表

以上是关于dos和unix换行符解析的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Bash 脚本中将 DOS/Windows 换行符 (CRLF) 转换为 Unix 换行符 (LF)

dos2unix命令详解

(转)Linux命令学习总结:dos2unix - unix2dos

DOS/UNIX回车符解密

DOS/UNIX回车符解密

sh Shell dos2unix换行符转换