Windows和Linux换行规则的区别

发表于:2014-6-10 10:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:linuxnote    来源:51Testing软件测试网采编

  结论:cat在普通输出内容的模式下,会将^M字符理解为回车,即回到当前行的开头,$字符理解为回车加换行,即到下一行行头开始输出内容。这样如果一个文本的行当中包含一个^M字符时,cat在显示这个文件时会出现意想不到的情况。
  例如,我手动创建一个一行的文本,在文本中加入一个回车符^M:
  可以发现cat在读取到^M之后回到行的开头开始输出,因此^M后面的字符被输出到了行的开头,覆盖了原来的内容。
  小结:
  windows下创建的文件换行符为^M$,但最后一行结尾没有换行符
  linux下创建的文件,每一行都会以换行符$结束,包括最后一行
  vim打开文件时,如果文件的所有换行符都是dos格式的^M$,那么vim会自动以dos文件格式来显示文本文件,否则会以默认的unix格式显示文本,这是可能会在行的结尾出现^M的符号
  wc -l是以$换行符来统计行数的,因此windows下创建的文件使用wc -l统计行数时会少一行
  一个windows下创建的文件,在linux下显示正常,但是用某些文本处理命令,如sed处理后,文件的某些换行符可能会改变,造成显示不正常
  sed处理文件时,会把windows换行符中的^M当作文件内容,即sed只保留$作为行末尾的换行符,因此可能会造成换行符不一致。
  cat在不显示特殊字符输出文件内容时,会将^M当作回车命令处理,而$当作回车加换行。所以如果一个文件的换行符是混杂有linux和windows版本的,在vim下显示时行尾为多出一个^M, 而cat下会显示正常(因为cat会把^M当作特殊字符处理)。但如果文件中间有^M这个特殊字符时,cat的显示会出现一些问题。
44/4<1234
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号