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 ...
最新文章
- 读书笔记:《Aspx开发200问》——如何实现Repeater控件的分页
- EJB_消息驱动发展bean
- iphone开发畅销书TOP5(china-pub内部数据)
- python统计单词频率、存放在字典中_Python3实现统计单词表中每个字母出现频率的方法示例...
- java四种线程池类型以及可选择的阻塞队列
- Java程序员遇到瓶颈后我们可以试着朝四个方向拓展?你们觉得呢?
- gulp之gulp.watch报错
- PyTorch学习笔记:torch.optim---Optimizer以及lr_scheduler
- hadoop fs命令
- 基于matlab的电子时钟,基于LCD1602电子时钟毕业设计报告.doc
- scala可变长度参数(一)
- 视频直播CDN系统架构简析
- java调用mac终端命令_JAVA之前 - mac终端命令行
- SecureCRT软件的使用
- sublime 3207 激活
- 电气EPLAN电气图纸设计
- 50万粉丝单场带货破200万!这些快手美妆黑马主播是如何在双十一前夕涨粉又爆单的?
- 【毕业设计】基于云平台的火灾报警器 - stm32 物联网 单片机 OneNET云平台
- 2023最新个人免签约免挂机即时到账码/源支付源码+店员监控插件
- 海尔云悦2db微型计算机,客厅小伙伴 海尔云悦mini2迷你主机评测
热门文章
- Ajax优缺点(面试题)
- HTTP协议--几种数据传输方式
- python看不懂怎么办_Python是个什么鬼,看美剧的人不懂也太尴尬了...
- 鼠标停止移动后指针消失
- Git Your branch and 'origin/master' have diverged
- 全球及中国变压器行业研究及十四五规划分析报告(2022)
- smarty模板 入门学习 (share)
- SQL批量删除与批量插入
- 外企面试日常生活常见口语12
- loggerController.py:封装日志记录器(Python+pytest)