linux中文件的dos格式转换为unix格式
问题描述:由于windows和linux的一些格式处理上存在差异,DOS(windows平台)格式的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),而 UNIX (linux平台)格式文本只有一个换行。即win每行结尾为\r\n,而linux只有一个\n。所以win下的文档上传到linux,每行的结尾都会出现一个^M,(^M是ctrl+v,ctrl+m)问题查看:直接vim filena
·
问题描述:
由于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
更多推荐
已为社区贡献1条内容
所有评论(0)