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字符。

dos和unix换行符解析

如何在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换行符解析

dos和unix换行符解析

上一篇:yum软件管理器,及yum源配置


下一篇:Git: LF wil1 be replaced by CRLF in readme.md.