在linux下,去除^M,将windows格式文件(dos文件)改成unix格式文件

  在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修改文件命令行

  • 若是文件是在windows环境下建立并编辑的,文件中全部的换行符都是'\r\n',vi会在打开文件时识别出该文件是dos格式,此时不会显示^M,在命令行模式下输入:set fileformat=unix,而后保存便可。
  • 若是文件中的换行符有些是为'\r\n',有些是'\n',在vi显示文件时,为'\r\n'将会显示为^M而后换行。这种状况能够直接用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

相关文章
相关标签/搜索