【问题标题】:How to remove ^M characters in the middle of each line in vi editor如何在vi编辑器中删除每行中间的^M字符
【发布时间】:2012-11-11 04:37:41
【问题描述】:

我正在尝试从文件中的每一行中间删除控制字符。下面是我的数据。我使用了下面的命令,但它似乎不起作用。

Command:
:%s/^M//g

Data:
53,v42,p11,51097,310780,ok^M,fraud
56,v45,p11,260,1925,ok^M,fraud
68,v42,p11,51282,278770,ok^M,fraud
96,v49,p14,212,1545,ok^M,fraud
163,v50,p20,373819,1006375,ok^M,fraud
204,v50,p26,36917,117195,ok^M,fraud
241,v70,p33,21777,91360,ok^M,fraud

Output Warning:
E486: Pattern not found: ^M

【问题讨论】:

    标签: unix replace vi


    【解决方案1】:

    看看这个帖子:http://www.tech-recipes.com/rx/150/remove-m-characters-at-end-of-lines-in-vi/

    To remove the ^M characters at the end of all lines in vi, use:
    
    :%s/^V^M//g
    
    The ^v is a CONTROL-V character and ^m is a CONTROL-M. When you type this, it will look like this:
    
    :%s/^M//g
    

    基本的推理是,键入 ^M 会搜索字面解释,两个字符 ^ 和 M,而您想从输入中构造实际的控制字符。

    【讨论】:

    • 噢!就在我正要按“发送”的时候 :-) 但无论如何,很好的答案!
    • 我仍然没有得到你的答案。而且我之前已经访问过该链接并尝试使用相同的命令,但它不起作用。
    • 你是在输入 ^M 还是按住 control 敲 v 按住 control 敲 m?我自己过去从来没有这样做过。什么操作系统?你在使用 PuTTY 之类的终端程序吗?
    • 如果我从键盘输入“^M”,它会显示模式 ^M not found,如果我说“Ctrl +M”,它会立即消失。
    • 如果你说Ctrl +V,然后是Ctrl +M,会出现什么?
    【解决方案2】:

    是的,你可以按住“Ctrl”和“v”键,然后按住“Ctrl”和“m”键,而不是按字面意思输入“^v”和“^m”。

    【讨论】:

      【解决方案3】:

      如何使用 VI 编辑器从 unix 文件中删除 ^M 使用这个命令。

      :%s(Ctrl+V)(Ctrl+M)/

      重要!! – 按 (Ctrl-v) (Ctrl-m) 组合输入^M字符,不要使用“^”和M。

      【讨论】:

      • 嗯 .. 问题还是答案?
      • 不是:%s(Ctrl+V)(Ctrl+M)/。您缺少开头的 / 和结尾的 /g。你的意思是:%s/(Ctrl+V)(Ctrl+M)//g.
      猜你喜欢
      • 2020-08-30
      • 2010-10-31
      • 2015-06-04
      • 2011-03-08
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2015-10-18
      • 2013-04-01
      相关资源
      最近更新 更多