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_PATH为REPORT_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"