在Windows系统下编辑的文件,换行符回车的格式为'\r\n',在linux系统下,回车的格式为'\n',在Windows下编辑的文本文件在上传至linux服务器时,回车'\r\n'就显示成^M+'\n'。linux
在Windows环境下,用ultraedit或者notepad plus都有相应的选项能够将Windows下的文本格式文件转换成unix格式文件。好比:notepad plus中“编辑”—>“档案格式转换”—>“转换为UNIX格式”。windows
在Linux下面,通常有三种方式来转换文件:服务器
1.使用dos2unix工具工具
通常的分发版本中都带有这个小工具(若是没有能够根据下面的链接去下载),使用起来很方便:
$ dos2unix myfile.txt
该命令会去掉行尾的^M。spa
2.用vi修改文件命令行
":%s/^M//g" 替换全部的^Munix
":%s/^M$//g" 替换行尾的^Morm
":%s/^M/[ctrl-v]+[enter]/g" 将^M替换成回车it
":%s/^M/\r/g" 将^M替换成回车form
在命令中,^M的输入方式是Ctrl+v,Ctrl+m,是一个字符,不是两个字符。(^I 制表符也是如此。)
替换后,若是去看那些内容,你会发现还没替换掉,可是若是你:x 保存退出后,再次用vi打开就发现他们已经彻底被替换掉了。
若是碰到有提示:E486: Pattern not found: ^M,单文件中实际存在^M,好比用"cat -v"或"cat -A"查看时,这种状况应该是由于文本中每行都是'\r\n'结尾,vi自动用dos模式打开,这样就看不到^M,这时候直接用:set fileformat=unix就能够了。
3.用sed命令修改
$ sed -e 's/^M/\n/g' myfile.txt
^M = Ctrl+v,Ctrl+m