Linux下的^M困惑

2020-05-11 09:05:25 浏览数 (1)

我们有时在Windows编辑的文件,放到了Linux环境中,打开文件,可能发现每行结尾多了一个“^M”,导致一些在Windows下能执行的解析程序,放到了Linux中,执行就会报错,问题就出在这个"^M"。

其实这个问题,和操作系统换行符相关。Dos、Windows格式的文件,用0D 0A(CR LF)作为换行符,而Linux/Unix的则是以0A(LF)作为换行符,因此以Dos底下的文本文件到了Linux,换行符就会多出来一个0D(CR),他会显示为"^M"。 在Linux中vim是无法显示r,因为ascii中对应的不是Linux中的标准acsii字符,其实其对应的ASCII码十进制形式是13(无显示形式),对应的八进制形式是15(显示为^M)。

对这个问题的解决可能有很多种,

1. 在Windows下使用文本工具进行转换win-->linux,例如notepad 、UltraEdit直接进行转换。

2. 在Linux下,可以用dos2unix file,将文件转换格式。 3. 在Linux下,可以用cat file | tr -d "r" > new_file,进行替换。 4. 在Linux下,可以用sed 's/^M//old_file > new_file,进行替换。

0 人点赞