今天看鸟哥的私房菜,看到tr 命令时候,有个示例提到了换行和回车,之前一直没去想过回车和换行的区别,今天想了下有些许好奇,找到了以下文档,瞬间明白了。

关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
     于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
      后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“ <回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号【^M即是\r】。原理是,linux/unix中的换行符\n在windows下被解释成一个黑点,而不是换行;windows下的换行符\r\n(顺序不能反)在linux下,\n被解释为换行,但是\r被解释为^M(这是Linux等系统下规定的特殊标记,占一个字符大小,不是 ^ 和 M 的组合,打印不出来的)。Linux下很多文本编辑器(命令行)会在显示这个标记之后,补上一个自己的换行符,以避免内容混乱(只是用于显示,补充的换行符不会写入文件,有专门的命令将Windows换行符替换为Linux换行符)。 UNIX/Linux系统下的换行符在Windows系统的文本编辑器中会被忽略,整个文本会乱成一团。

windows换行是\r\n,十六进制数值是:0D0A。
LINUX换行是\n,十六进制数值是:0A
所以在linux保存的文件在windows上用记事本看的话会出现黑点,我们可以在LINUX下用命令把linux的文件格式转换成win格式的。
unix2dos 是把linux文件格式转换成windows文件格式
dos2unix 是把windows格式转换成linux文件格式。

linux下删除windows换行符^M

OJ判题时发现一个问题:用%c读入的代码都会报wa。后来发现跟scanf有关。在linux下使用%c会读到\n和\r两个字符。所以需要将^M(也就是\r)字符删掉
删除方法不少。找了一个比较简单的。
要将a.txt里的^M去掉并写入b.txt,则使用如下指令cat a.txt | tr -d "^M" > b.txt
注意:语句中的^M是通过ctrl+V, ctrl+M输入的。特指/r字符

unix   下换行符只有:   \n
Dos   下换行符有:\r\n 
具体的,   \r的ascii   码是:13 
                 \n的ascii   码是:10

原文地址:https://www.cnblogs.com/everest33Tong/p/6202446.html

回车符号和换行符号原来是这样产生的相关推荐

  1. 回车符号和换行符号的区别

    回车符号和换行符号产生背景:     关于"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别. 在计算机还没有出现 ...

  2. 回车符号和换行符号产生背景

    回车符号和换行符号产生背景: 关于"回车"(carriage return)和"换行"(line feed)这两个概念的来历和区别. 在计算机还没有出现之前,有 ...

  3. C/C++编程:回车符和换行符

    回车符号和换行符号产生背景 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒, ...

  4. Javascript去除回车换行符号和PHP去除回车换行符的方法

    在不同的操作系统,回车换行符号是不一样的,看下面: 首先说说\n,\r,\t \n 软回车: 在Windows 中表示换行且回到下一行的最开始位置 在Linux.unix 中只表示换行,但不会回到下一 ...

  5. linux系统vim下输入回车换行符号的解决方法

    linux系统vim下输入回车换行符号的解决方法 遇到问题 vim再linux 下回车后符号为'\r', 而不是我们想要的像windows下为'\r\n' 怎么解决呢?解决方法如下: 1. linux ...

  6. 微信小程序wxparse特殊解析空格,解析↵换行符号

    因为在实际的项目中使用wxparse的时候,发现空格和换行解析不了,就进行的源码的查看及修改, (一).解决↵换行符号解析不了的方法 在微信小程序中换行\n需要再在text中进行实现,但是wxpars ...

  7. html 换行特殊符号,html中的换行符号

    html中的换行符号: Word中向下的箭头↓符号怎么删除?手动换行符删除方法,缺失:html中的换行符号12244/11 以下是的一些我们精选的Word中向下的箭头↓符号怎么删除?手动换行符删除方法 ...

  8. 万恶的windows换行符号

    今天工作中的一个诡异现象是以为windows的换行符号导致的 关于windows和linux的换行符号差异请看下面这篇文章 http://blog.csdn.net/nclhl/article/det ...

  9. UnityC#字串如何获取换行符号-最基础的字串处理方法,也最容易常见错误

    C#里面的换行符号是 \r\n (Java的换行符号就不是 \r\n 了?应该这是windows的换行符号,mac并不如此,) 以下内容并没在mac 和 linux测过(一般linux也不需要字符串) ...

最新文章

  1. logstic 回归
  2. python排序链表_合并K个排序链表
  3. 【安卓开发 】Android初级开发(九)Android中封装View提供接口供点击事件回调的方法及使用
  4. Screenium 3 for Mac - 强大的屏幕录制编辑器
  5. iOS开发 -- 发送JSON数据给服务器
  6. 小学多媒体计算机室管理计划,多媒体教室管理工作计划
  7. Python自动化结算工资和统计报表
  8. 中国互联网创业大咖(收藏)
  9. 五笔输入法 快速入门 二小时基本了解五笔
  10. 各种软件以及插件官网地址 echarts Vscode 阿里云图标库 鼠标图标
  11. gh-ost学习笔记 试验代码学习
  12. 5 月最大的 GameFi 崩溃受害者能否在熊市中生存?| May Monthly Report
  13. PERMISSION_UNFINISHED
  14. java 字符串转时间,时间转字符串
  15. Java怎样把时间转成毫秒_如何转换时间格式 java如何把时间格式转为毫秒
  16. 飞卡日常进度之山外上位机的二值化模式和灰度模式
  17. python2基础难点_第2课Python基础知识,第二课,python,要点
  18. 12本大神级程序员必读书籍,从菜鸟走向牛逼!
  19. C语言中文文档、C语言文档大全(网址)
  20. BT种子、磁力、ED2K下载工具_wentfar·tsao

热门文章

  1. wps文档漫游删除_WPS自带的文档漫游和在线模板怎么关闭?
  2. 计算机程序中的keymapping,计算机基础(双语)Keyterms.doc
  3. codevs1034
  4. C语言 有关库函数简介
  5. WPF(3)----多窗口的实现
  6. SAP MM ME56不能为审批后的PR分配货源? 2
  7. ctfshow Nodejs
  8. 云计算都有哪些特点?展望云计算的发展前景
  9. PT2262 433MHZ超再生遥控电路如何用STM软解码代替TP2272(省去PT2272)
  10. 增高助长~~~~~~~~~~~~