vi编辑器之替换操作

vi不支持模糊查询和混合查询

1、全局替换字符串

eg

/home/zhangyzh./evn

/home/zhangyzh./evn

/home/zhangyzh./evn

...

/home/zhangyzh./evn

现在需去掉zhangyzh后的“.”,可采用字符串替换的方式:

:%s/zhangyzh./zhangyzh/g

即可将.全部去掉。其中,/g表示全局的意思。

可以用来去掉某一列的字符

2、替换指定范围内的字符串

eg:要替换14行至20行之间的所有TCL_PATHREPORT_PATH,命令如下:

:14,20s/TCL_PATH/REPORT_PATH/

替换行为将只发生在14~20行之间。

3、替换含指定字符串的字段

4、多行串成一行

即换行符替换成空格

指令:

:%s/ / /g

:0,$s/ / /

5、逗号和回车互换

eg1

aaa,bbb,ccc

处理成以下形式:

aaa

bbb

ccc

方法:

:%s/,/^M/g

^M是用ctrl-v然后ctrl-m敲出来的

eg2

aaa

bbb

ccc

替换成

aaa,bbb,ccc

方法:

:%s/ /,/

7、模糊匹配

用中括号[]将关键字符串包起来,查找结果将显示出三种匹配情形:

(1)含有关键字符串中任意单一字符;

(2)关键字符串中任意个数字符按顺序组合任意多个的字符段;

(3)完整的关键字符串

eg:

输入命令:

/[RNID]

会查找出所有含有R、N、I、D;RN、RNI、RNID、NID、ID的内容。

8、行尾添加

eg:

如:

111111 111111 1111111

222222 222222 2222222

要处理成

111111 111111 1111111 F F F

222222 222222 2222222 F F F

按ESC,输入:进入命令状态后:

起始行号,结束行号s/$/ F F F/g

其实,思路就是把行尾结束符$,替换成你想要的字符串" F F F"