夜owl

困到睡不着
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

CR LF 和/r /n的来源、区别和应用

Posted on 2025-08-01 17:49  夜owl  阅读(91)  评论(0)    收藏  举报

1. 介绍

1.1. 概念

回车(Carriage Return)CR-将光标移动到当前行的开头。
CR使用'\r'符号表示, 十进制ASCII代码是13, 十六进制代码为0x0D

换行(Line Feed)LF-将光标“垂直”移动到下一行。
LF使用'\n'符号表示, 十进制ASCII代码是10, 十六进制代码为0x0A

不同的系统使用不同的符号组合

  • Windows:结合使用回车和换行(\r\n),因为Windows传统上借用了打字机时代的两个独立操作。
  • Unix/Linux:只使用换行符(\n),因为它的设计追求简洁和高效,所以只用了换行的功能。
  • 早期Mac OS:只使用回车符(\r),但从Mac OS X开始,Mac也改用了Unix的换行符(\n)。

影响

一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

1.2. 背景

在早期的机械英文打字机,有一个部件叫 “字车”(carriage) ,每打一个字符,“字车”就前进一格。当打满一行字符后,打字者就得推动“字车”到起始位置,以便开始输入下一行,这个推动“字车”的动作叫 “回车”(carriage return)。同时要将纸张上移一行,滚筒上卷一行这就是换行(Line Feed)

电动打字机时代,回车操作变成了一个单独的回车键(Carriage Return key),按下回车键(CR)会使纸张归位,许多早期的电动打字机也增加了一个“换行”功能,回车键就变成了有两个操作的功能。

2. 使用场景

2.1. 排版显示

在work和notepad中,可以显示格式符用于排版
notepad在视图中配置
notepad show cf
word的段落的-><-|
word show cf
或者在选项配置
alt text

2.2. print控制console输出log换行

代码debug log用导的printf打印时基本都会用到 \n\r 之类控制字符

2.3. 正则表达式搜索

\r\n在正则可以搜索匹配,进而可以搜索特定文本,或者替换来改变文本段落的布局
比如
正则表达式 - 夜owl - 博客园
3.2 特定行数增加新行(捕获引用运用)

类似上面的,但是需要识别特定行数,不如数字结尾的行数才需要增加新行

正则表达式:

  • 搜索(\d)(\r)

  • 替换\1\r\n

  • 解释:

  • (\d):匹配数字(行号),并将其作为一个捕获组。

  • (\r):匹配回车符,作为第二个捕获组。

  • \1\r\n:在替换时,\1 保留原来的数字,\r\n 将回车符替换为回车换行符。

3. 参考

回车(CR)与换行(LF), '\r'和'\n'的区别-腾讯云开发者社区-腾讯云
地道英语 | 为什么Enter键翻译为回车?跟carriage又有啥关系?
很少人真正了解 \n 和 \r 有什么区别!-腾讯云开发者社区-腾讯云