zoukankan      html  css  js  c++  java
  • 在linux下,去除^M,将windows格式文件(dos文件)改为unix格式文件

      在Windows系统下编辑的文件,换行符回车的格式为' ',在linux系统下,回车的格式为' ',在Windows下编辑的文本文件在上传至linux服务器时,回车' '就显示成^M+' '。

      在Windows环境下,用ultraedit或者notepad plus都有相应的选项可以将Windows下的文本格式文件转换成unix格式文件。比如:notepad plus中“编辑”—>“档案格式转换”—>“转换为UNIX格式”。

      在Linux下面,一般有三种方式来转换文件:

      1.使用dos2unix工具

      一般的分发版本中都带有这个小工具(如果没有可以根据下面的连接去下载),使用起来很方便:
      $ dos2unix myfile.txt
      该命令会去掉行尾的^M。

      2.用vi修改文件

    • 如果文件是在windows环境下创建并编辑的,文件中所有的换行符都是' ',vi会在打开文件时识别出该文件是dos格式,此时不会显示^M,在命令行模式下输入:set fileformat=unix,然后保存即可。
    • 如果文件中的换行符有些是为' ',有些是' ',在vi显示文件时,为' '将会显示为^M然后换行。这种情况可以直接用vi的替换功能。

    ":%s/^M//g"   替换所有的^M

    ":%s/^M$//g"   替换行尾的^M

    ":%s/^M/[ctrl-v]+[enter]/g"  将^M替换成回车

    ":%s/^M/ /g"   将^M替换成回车

    在命令中,^M的输入方式是Ctrl+v,Ctrl+m,是一个字符,不是两个字符。(^I 制表符也是如此。)

    替换后,如果去看那些内容,你会发现还没替换掉,但是如果你:x 保存退出后,再次用vi打开就发现他们已经完全被替换掉了。

      如果碰到有提示:E486: Pattern not found: ^M,单文件中实际存在^M,比如用"cat -v"或"cat -A"查看时,这种情况应该是因为文本中每行都是' '结尾,vi自动用dos模式打开,这样就看不到^M,这时候直接用:set fileformat=unix就可以了。

      3.用sed命令修改

      $ sed -e 's/^M/ /g' myfile.txt

      ^M = Ctrl+v,Ctrl+m

  • 相关阅读:
    Delphi ADOQuery连接数据库的查询、插入、删除、修改
    Delphi开发的一些技巧
    获取的数据载入listview控件中
    第一个Directx程序
    edit编辑框只能输入数字和一个小数点
    (原创) 一个通用的C++ 消息总线框架
    springboot 集成logback 及配置,日志格式,重复打印配置
    算法09未排序数组中累加和为给定值的最长子数组长度
    算法12猫狗队列
    算法06由两个栈组成的队列
  • 原文地址:https://www.cnblogs.com/zijin/p/3501912.html
Copyright © 2011-2022 走看看