文本编辑 换行符CRLF/CR/LF问题

参考资料

  1. Linux—CRLF/CR/LF等回车换行符问题详解
  2. 改行コードCRはなぜ(^M)で\rなのか
  3. テキストファイルの行末に^Mが表示される
  4. Linux 替换^M字符 方法


一. 遇到的问题

在学习Linux的join命令时,我在win10上准备了2个文本文件,内容如下

✅a.txt

AAA BBB
CCC DDD

✅b.txt

AAA EEE
CCC FFF

通过WinSCP将上述2个文件放到linux中,执行join a.txt b.txt > c.txt的时候,理论上得到的c.txt内容如下

✅c.txt

AAA BBB EEE
CCC DDD FFF

但实际上得到的确是

✅c.txt

AAA BBB
 EEE
CCC DDD
 FFF

😵在linux上,使用vim命令查看,显示如下,可以看到 多了一个 ^M的符号。
这个 ^M是个啥?😵

在这里插入图片描述

😒如果我们的 a.txt 和 b.txt 都是在linux系统中通过vim编辑的话,执行 join a.txt b.txt > c.txt得到的c.txt是完全没有问题的。


二. 换行符释义

在谷歌日本上用linux ^M作为关键词搜索,得到了如下表格

通称英語名日本語名アスキーコード正規表現表記
CRcarriage return復帰0x0D\r^M
LFline feed / newline / end-of-line / EOL改行0x0A\n^K

检索CRLF后得到了如下表格。

名词含义ASCII字符系统
CRCarriage Return,回车\rMacintosh(早期的Mac OS)系统
LFLine Feed,换行\nUnix/Linux/Mac OS X系统
CRLFCarriage Return & Line Feed`,回车并换行\r\nWindow系统

也就是说

  • Windos系统中用 CRLF 换行符
  • Linux系统中用 LF 换行符,标记为 ^K
  • 早期的Mac OS系统用 CR 换行符,标记为 ^M

三. 换行符查看

Win10自带的记事本无法查看换行符,我们使用 Notepad++ 来查看

⏹通过如下设置,显示出行尾符
在这里插入图片描述

⏹查看Window编辑的文本文件
在这里插入图片描述

⏹查看linux编辑的文本文件
在这里插入图片描述
⏹查看在linux中执行join a.txt b.txt > c.txt后得到的错行的c.txt文件
在这里插入图片描述

四. 去除 ^M

4.1 通过文本编辑器转换换行符

⏹在 Notepad++ 中通过右下角的的换行符设置来转换为我们想要的换行符

在这里插入图片描述

4.2 在linux中去除

如下图所示,通过 %s/^M//g 命令,替换为空白即可。
💥千万注意: 上述命令中的 ^M并不是 先用键盘输入 ^之后,再用键盘输入M得到的字符^M
如果直接输入^M来替换,默认替换是文本^M,而不是换行符^M
在这里插入图片描述

⏹直接输入^M的显示效果如下,可以看到^M是白色的,表示此时的^M只是普通的文本

在这里插入图片描述

⏹我们应该输入的是这种显示为蓝色的^M,这个时候的^M不是普通的文本。

在这里插入图片描述

💪输入显示为蓝色的^M的方法如下
在这里插入图片描述

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值