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

  • 相关阅读:
    Merge sorted ranges
    call_once/once_flag的使用
    对‘boost::serialization::singleton_module::get_lock()’未定义的引用
    C++多线程lock_guard
    长度为0的数组—— Arrays of Length Zero
    Utunbu VLC 播放器播放本机rtp码流
    Utunbu VLC 播放器播放本机h264码流
    Declaration of non-local variable in 'for' loop
    ZFEC--Demo--C语言接口
    malloc-demo
  • 原文地址:https://www.cnblogs.com/ricks/p/10019203.html
Copyright © 2011-2022 走看看