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

来源:互联网 发布:金庸群侠传2秘籍数据 编辑:程序博客网 时间:2024/05/17 20:43

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


原创粉丝点击