首页 > 其它语言 > Linux和windows换行符区别及使用说明

Linux和windows换行符区别及使用说明

Linux和windows换行符区别及使用说明

windows下的文件换行是以 "\r\n"结束的, 而linux这种类unix系统是以"\n"结束的。

“r”所对应的英文单词为"return",意为换行;“n”所对应的英文单词为"newline"意为新行,呵呵都一个意思。

之所以,UNIX系统下省略了“\r”是因为,UNIX的创立者觉得微软的这一套"\r\n"作为换行标识符比较占用存储空间,更重要的一点是浪费宝贵的寄存器的空间(因为系统读取文本是要经过cpu处理的,这就会占用寄存器空间),大家要知道几十年前,寄存器的容量是很小的,而且造价高昂(当然现在也好不到哪里去)。

为了验证这一点,可以写一个简单的小列子测试一下:

分别在windows下和Linux下新建文本windows.txt、linux.txt并向两了文件中写入内容:

hello

world

这时用EditPlus编辑器分别打开windows.txt和Linux.txt,并以十六进制形式查看两者的文件内容。

windowx.txt内容如下:

Linux.txt内容如下:

注意:"\r"对应的十六进制编码为:0D;“\n”对应的十六进制编码为:0A

正因为如此,linux系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Linux下打开的话,在每行的结尾可能会多出一个^M符号(这是Linux等系统下规定的特殊标记,占一个字符大小,不是 ^ 和 M 的组合,打印不出来的)。所以unix的文本到windows会出现换行丢失; 而反过来就会出现^M的符号了。

注:在这里,我用vim编辑器打开windows.txt并未看到有“^M”字符,用":/\r"命令查找“\r”字符也没找到,我在想是不是vim编辑器自动的把"\r"字符给过滤了。在此留个疑问,如果哪位读者知道答案,可以告诉我下。

 

linux下如何删除windows换行符^M

要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符


本文固定链接: http://www.devba.com/index.php/archives/3695.html | 开发吧

报歉!评论已关闭.