ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Linux 转换换行符

Linux 转换换行符

Linux操作系统 作者:hai503 时间:2022-10-09 12:42:04 0 删除 编辑

将Windows下编写的一个txt文件在Linux下打开的时候发现每行行末都会多出^M,而将Linux编写的一个txt文件在Windows下打开时发现所有的内容都在一行显示,原本在Linux下是分了行的,为什么会出现这种现象呢?其实这与windows和Linux对换行符的标志不一样而已。


在介绍两者系统的换行符之前,先介绍下回车与换行的概念。


回车:CR,在文本中显示为^M,在字符串中对应为‘\r‘,r表示return;


换行:LF,在文本中显示为$,在字符串中对应为‘\n‘,n表示next。


Windows中断行字符


Windows觉得换行应该要做两件事:第一是要将读写针头跑到下一行(换行);第二则是要在下一行从头开始读写(回车),所以windows一直都是用 CR+LF表示换行的意思,字符为‘\r\n‘。


Linux中的断行字符


早起的Unix闲用两个字符(CR+LF)表示表示换行麻烦,就只采用后者LF(mac系统则独树一帜,采用前者CR表示换行符)。所以Linux采用的换行字符为‘\n‘。


总结:Windows中的断行字符为‘\r\n‘,Linux中的断行字符为‘\n‘,mac的断行字符为‘\r‘。


既然Linux和Windows的断行字符不一致,那么问题就来了。两者在相互读取问题的时候,则会出现向本文开头那样的问题:Linux系统读windows系统下编写的txt文件时,会在每行的末尾多一个^M(即多了‘\r‘);而windows系统下读取Linux下编写的txt文件时,所有的内容都在同一行(因为缺少\r)。


在Linux下提供了一组命令,来相互转化windows后Linux下的文件.


dos2UNIX命令:将Windows文件-->Linux文件;


UNIX2dos命令:将Linux文件--->Windows文件;


两个参数:


-k:(keep)保留原来文件的最近修改时间参数,即本次转化不算修改内容,mtime不变;


-n 旧文件名 新文件名:(new)保留旧文件,将转化后的文件输出到新文件。


Notice:在Linux系统下读取Windows文件时,一定要先采用dos2UNIX命令转化下;将Linux下编写的文件传给Windows文件时,一定要先用UNIX2dos转化下。


原文:http://blog.csdn.net/jxh_123/article/details/26220619

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12707874/viewspace-2917364/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-09-04

  • 博文量
    79
  • 访问量
    222957