Linux下的^M,Windows断行符转换

今天项目联调的时候出现配置文件无法正确读取的问题,但是cat配置文件的值都对,纠结了好久最后使用开发板上的vi打开配置文件,发现配置文件每行的结尾多出来好多^M.后来上网查明了原因以及解决方案。

在 Linux 中使用打开曾在 Windows 中编辑过的文件时,会在行尾看到 ^M 字符。这个原因是由于Linux的回车换行是/n  LF ($) 这个断行符号。而Windows下为/r/n 即CR 与 LF 两个符号。 这个^M 即是Windows下转为Linux下多出来的那个/r符号,Linux会将这个/r自动转换为^M. 使用Windows打开Linux下的文本文件即会出现这种情况,使用Windows下的ssh对开发板上的文件进行下载和上传有时也会出现同样的问题

解决方法如下:

在 Vim或Vi下的命令模式中输入 :%s/^M$//g 后,回车即会自动删除该文件中文件结尾的 ^M 字符。

(注意:其中的 ^M 要用 Ctrl + v然后Ctrl + m 来输入而不是单纯的输入^M),M 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配到的内容都要置换。

相关阅读:

相关推荐