Windows和Linux 行尾符(EndOfLine)的区别
转载用于收藏学习,原文链接: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. 概念区分
![](/assets/blank.gif)
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中查看文本:
![](/assets/blank.gif)
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)的区别相关推荐
- python print 分隔符_python print 使用分隔符 或行尾符
使用print() 函数输出数据,但是想改变默认的分隔符或者行尾符. >>> print('ACME', 50, 91.5) ACME 50 91.5 >>> pr ...
- python输出间隔符_python print 使用分隔符 或行尾符
使用print() 函数输出数据,但是想改变默认的分隔符或者行尾符. >>> print('ACME', 50, 91.5) ACME 50 91.5 >>> pr ...
- 在Vim中将DOS行尾转换为Linux行尾
如果打开在Windows中创建的文件,则所有行均以^M结尾. 如何一次删除所有这些字符? #1楼 tr -d '\15\32' < winfile.txt > unixfile.txt ( ...
- linux 行尾加字符串,linux – cat in expect脚本在字符串结尾添加新行
我在expect脚本中有以下内容 spawn cat version expect -re 5.*.* set VERSION $expect_out(0,string) spawn rpm --ad ...
- windows和linux环境下的嵌入式开发区别
主机(PC)开发差别: 在windows下写程序 1.--->打开Microsoft Visual C++ 6.0程序 2.--->关闭提示窗口(有的程序不提示) 3.--->fil ...
- 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
[时间]2018.11.14 [题目]在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 一.去除换行符 以使用readline进行读取为例: import red ...
- python去掉最后一行的换行符_python去掉行尾的换行符方法
python去掉行尾的换行符方法 如下所示: mystring.strip().replace(' ', '').replace('\n', '').replace('\t', '').replace ...
- 《Python Cookbook 3rd》笔记(5.3):使用其他分隔符或行终止符打印
使用其他分隔符或行终止符打印 问题 你想使用 print() 函数输出数据,但是想改变默认的分隔符或者行尾符. 解法 可以使用在 print() 函数中使用 sep 和 end 关键字参数,以你想要的 ...
- linux中fopen和open的区别,Linux下open与fopen的区别
int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY ...
最新文章
- 分数加减法_JAVA
- javaweb学习总结(四十三)——Filter高级开发
- HDU - 4280 Island Transport(最大流)
- php 机数,PHP实现自动刷数和“灌水”机
- 如何利用bat在同一个IE用多个选项卡的方式打开多个网址? 如何利用bat在同一个IE用多个选项卡的方式打开多个网址? 我的网址是这样的http://www.xags.gov.cn:8003/gga
- sublime3 常用功能总结
- Greenplum segment级问题的排查 - gp_session_role=utility (含csvlog日志格式解读)
- Java 创建线程的4种方式
- 杭电ACM求平均成绩
- 数据库持久化ORM框架Hibernate、JPA、Mybatis、JOOQ和JDBC Template的比较
- vue 初识MVC与MVVM,及其与vue基本代码之间的关系
- excel向下填充公式快捷键
- matlab表格数据合并同类项,Excel合并同一列中的同类项原来这么简单,赶紧收藏!...
- VirtualBox调整分分辨率
- VS解决方案文件格式说明
- github上下载nacos教程并安装
- 语义计算_语义多态性如何在量子计算中起作用
- FXCM福汇官网 fx-aisa.com外汇交易中,你必须了解的八种主流货币知识
- 简述运用计算机思维解决问题的步骤,计算思维能力主要包括问题及问题求解过程的符号表示、逻辑思维与抽象思维、形式化证明、建立模型和模型计算、利用计算机技术等能力 答案:√...
- debian安装rar