在使用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码表