问题描述:

由于windows和linux的一些格式处理上存在差异,DOS(windows平台)格式的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),而 UNIX (linux平台)格式文本只有一个换行。即win每行结尾为\r\n,而linux只有一个\n所以win下的文档上传到linux,每行的结尾都会出现一个^M,(^M是ctrl+v,ctrl+m)

问题查看:

直接vim filename是看不到^M的存在的,使用-b参数才可以。

vim -b filename

问题解决:

方法一:既然是编码格式不一样导致的问题,那就直接修改文件格式。vim进入文件后,在编辑模式下输入:

set ff=unix 

然后wq保存就可以了。这个方法适用于修改单个文件。

方法二:不想进入vim修改,可以使用语句

sed -i 's/\r//g' filename

进行文本内容替换。这个语句本身适用于修改单个文件,但是可以由于是命令行执行的,所以可以结合xargs等命令实现批量修改。

find ./ -type f print0 | xargs -0 sed -i 's/\r//g'

方法三:可以使用dos2unix命令修改

dos2unix filename

这个命令本身适用于修改单个文件,但是可以使用shell语句实现批量修改。

for x in $(find . -type f);do dos2unix $x $x;done

 

Logo

更多推荐