在linux下,有时我们用vi打开一些windows下编辑过的文本文件,我们会发现文件的每行(或某些行)结尾都会有一个^M符号(不限于此,有时其他程序生成的文件也可能有此符号),这可能是因为dos下的编辑器和linux下的编辑器对文件行末的回车符处理不一致所致,也可能是生成文本文件的程序编写有问题所致。
对于回车符的定义:
windows:0D0A
unix/linux: 0A
MAC: 0D
比较快捷的去除这些符号的方法有这么几种:
1、是用vi的命令:
使用vi打开文本文件
vi dos.txt
命令模式下输入
:set fileformat=unix
:w
注:该方法不能保证一定有效。
2、vi下使用正则表达式替换
g/^M/s/^M//
或者
%s/^M//g
3、使用sed 工具
sed ’s/^M//’ filename > tmp_filename
4、既然window下的回车符多了‘ ’,那么当然通过删除‘ ’ ,也可以实现:
tr -d " "
5、最后一个方法是最便捷也最有效的方法
在终端下输入命令:
$ dos2unix filename
直接就可以转换成unix格式!
本文出自 “第二次启航” 博客,转载请与作者联系!