转载用于收藏学习,原文链接:https://blog.csdn.net/timberwolf_2012/article/details/28687477

不同操作系统,文本文件的行尾符是有区别的。

1. 各系统关于行尾符(End-of-Line)的规定   Unix每行结尾为"\n",   Windows系统每行结尾是“\r\n”,   Mac OS在 OS X以前每行结尾是"\r", 现在每行结尾是 "\n".

2. 概念区分

3. 回车与换行来历

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。 后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

结果是,   Unix每行结尾为’\n‘, Windows系统每行结尾是“\r\n”, Mac系统每行结尾是'\r', 后果是,   Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;   Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

4. 编程相关  在Windows系统中,文本文件以" \r\n"代表换行。   用fputs等函数写换行符 ' \n'时,Windows会将 ' \n'隐式转换为"\r\n",然后再写入到文件中。   用fgets等函数读换行符 ' \n' 的时候,Windows会将文件中的"\r\n"隐式转换为'\n',然后再读到变量中。

5. 实例分析   生成一个包含换行(\n, 0x0A)和回车(\r, 0x0D)组合的文本   $ echo -en '1\n2\r\n3' > temp  十六进制方式查看文本:   $ xxd temp

Linux中查看文本:   $ xxd -r temp   $ vim temp

Windows中查看文本:

6. 不同平台间文本文件转换 编辑器实现转换。 NotePad++/Ultra Edit/Sublime Text2提供了转换功能。 用Linux命令实现转换。 Windows到Unix $ sed -e 's/.$//' mydos.txt > myunix.txt Unix到Windows $ sed -e 's/$/\r/' myunix.txt > mydos.txt 用Linux命令实现转换。 $ unix2dos filename $ dos2unix filename————————————————版权声明:本文为CSDN博主「czzshr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/timberwolf_2012/article/details/28687477

Windows和Linux 行尾符(EndOfLine)的区别相关推荐

  1. python print 分隔符_python print 使用分隔符 或行尾符

    使用print() 函数输出数据,但是想改变默认的分隔符或者行尾符. >>> print('ACME', 50, 91.5) ACME 50 91.5 >>> pr ...

  2. python输出间隔符_python print 使用分隔符 或行尾符

    使用print() 函数输出数据,但是想改变默认的分隔符或者行尾符. >>> print('ACME', 50, 91.5) ACME 50 91.5 >>> pr ...

  3. 在Vim中将DOS行尾转换为Linux行尾

    如果打开在Windows中创建的文件,则所有行均以^M结尾. 如何一次删除所有这些字符? #1楼 tr -d '\15\32' < winfile.txt > unixfile.txt ( ...

  4. linux 行尾加字符串,linux – cat in expect脚本在字符串结尾添加新行

    我在expect脚本中有以下内容 spawn cat version expect -re 5.*.* set VERSION $expect_out(0,string) spawn rpm --ad ...

  5. windows和linux环境下的嵌入式开发区别

    主机(PC)开发差别: 在windows下写程序 1.--->打开Microsoft Visual C++ 6.0程序 2.--->关闭提示窗口(有的程序不提示) 3.--->fil ...

  6. 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别

    [时间]2018.11.14 [题目]在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 一.去除换行符 以使用readline进行读取为例: import red ...

  7. python去掉最后一行的换行符_python去掉行尾的换行符方法

    python去掉行尾的换行符方法 如下所示: mystring.strip().replace(' ', '').replace('\n', '').replace('\t', '').replace ...

  8. 《Python Cookbook 3rd》笔记(5.3):使用其他分隔符或行终止符打印

    使用其他分隔符或行终止符打印 问题 你想使用 print() 函数输出数据,但是想改变默认的分隔符或者行尾符. 解法 可以使用在 print() 函数中使用 sep 和 end 关键字参数,以你想要的 ...

  9. linux中fopen和open的区别,Linux下open与fopen的区别

    int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY      ...

最新文章

  1. 读书笔记:《Aspx开发200问》——如何实现Repeater控件的分页
  2. EJB_消息驱动发展bean
  3. iphone开发畅销书TOP5(china-pub内部数据)
  4. python统计单词频率、存放在字典中_Python3实现统计单词表中每个字母出现频率的方法示例...
  5. java四种线程池类型以及可选择的阻塞队列
  6. Java程序员遇到瓶颈后我们可以试着朝四个方向拓展?你们觉得呢?
  7. gulp之gulp.watch报错
  8. PyTorch学习笔记:torch.optim---Optimizer以及lr_scheduler
  9. hadoop fs命令
  10. 基于matlab的电子时钟,基于LCD1602电子时钟毕业设计报告.doc
  11. scala可变长度参数(一)
  12. 视频直播CDN系统架构简析
  13. java调用mac终端命令_JAVA之前 - mac终端命令行
  14. SecureCRT软件的使用
  15. sublime 3207 激活
  16. 电气EPLAN电气图纸设计
  17. 50万粉丝单场带货破200万!这些快手美妆黑马主播是如何在双十一前夕涨粉又爆单的?
  18. 【毕业设计】基于云平台的火灾报警器 - stm32 物联网 单片机 OneNET云平台
  19. 2023最新个人免签约免挂机即时到账码/源支付源码+店员监控插件
  20. 海尔云悦2db微型计算机,客厅小伙伴 海尔云悦mini2迷你主机评测

热门文章

  1. Ajax优缺点(面试题)
  2. HTTP协议--几种数据传输方式
  3. python看不懂怎么办_Python是个什么鬼,看美剧的人不懂也太尴尬了...
  4. 鼠标停止移动后指针消失
  5. Git Your branch and 'origin/master' have diverged
  6. 全球及中国变压器行业研究及十四五规划分析报告(2022)
  7. smarty模板 入门学习 (share)
  8. SQL批量删除与批量插入
  9. 外企面试日常生活常见口语12
  10. loggerController.py:封装日志记录器(Python+pytest)