linux和windows文本换行格式问题(^M)

起源

在windows中写的脚本执行完全没问题,代码一模一样,切换到linux中执行报错。利用命令 “vi/vim -b 文件名”查看文件发现每行结尾多了“^M”这样的结尾。

根源

通过查询得知,其问题根源是windows和linux换行符不同造成,二者区别如下表(外加了mac book)

  windows linux MacBook
换行符
ASCII 0x0d0a 0x0a 0x0d

  其中:

  • " "在ASCII中表示“换行(LF)”
  • " "在ASCII中表示“回车(CR)”

解决

注:主要在linux中解决由于文件结尾产生的错误

1、确认代码无误

2、利用命令“vi -b [filename] ”查看结尾是否多了“^M”

3、文件格式转换

  • 方式一:dos2unix
    • 下载并安装dos2unix
    • 利用命令“dos2unix [filename]”完成转换
  • 方式二:替换(vim+正则表达式)
    • 利用命令“vim -b [filename]”打开该文件
    • 在命令模式下输入:“%s/^M//g”或者“g/^M/s/^M//”
    • 保存并退出

注意:方式二中“^M”的输入方式:ctrl+v+m

Hope you will sing a song for me!
原文地址:https://www.cnblogs.com/feer/p/9578059.html