如何在vi编辑器中删除每行中间的^ M个字符

时间:2012-11-22 18:42:24

标签: unix replace vi

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

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

3 个答案:

答案 0 :(得分:4)

看一下这篇文章: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的两个字符,而你想要从输入中构造实际的控制字符。

答案 1 :(得分:1)

是的,你按住'Ctrl'并键入'v',然后按住'Ctrl'并键入'm',而不是字面上键入'^ v'和'^ m'。

答案 2 :(得分:-1)

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

:%S(CTRL + V)(按Ctrl + M)/

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