vi中的全局替换
⼀、基本语法
替换命令语法:
:[addr]s/源字符串/⽬标字符串/[option]
全局替换:
:%s/源字符串/⽬标字符串/g
参数说明:
[addr]——表⽰检索范围,省略时表⽰当前⾏。
"%":表⽰整个⽂件,同"1,$";
".,$":从当前⾏到⽂件尾;
s:表⽰替换操作
[option]:表⽰操作类型
g:全局替换
c:表⽰进⾏确认
p:表⽰替换结果逐⾏显⽰(Ctrl+L恢复屏幕)
省略option:默认仅对每⾏第⼀个匹配串进⾏替换
如果在源字符串和⽬标字符串中有特殊字符,需要使⽤“\”转义
⼆、使⽤⽰例
1.常⽤场景
/str1/str2/ ——⽤str2替换当前⾏中⾸次出现的str1
/str1/str2/g ——⽤str2替换当前⾏中所有出现的str1
:.,$s/str1/str2/g ——⽤str2替换正⽂当前⾏到末尾所有出现的str1
:
1,$s/str1/str2/g ——⽤str2替换正⽂中所有出现的str1
:%s/str1/str2/ ——替换每⼀⾏中所有str1为str2记住我
:%s/str1/str2/(等同于:g/str1/s//str2/) ——替换每⼀⾏的第⼀个str1为str2
:%s/str1/str2/g(等同于:g/str1/s//str2/g) ——替换每⼀⾏中所有str1为str2
2.g选项总结:
g放在命令末尾,表⽰对搜索字符串的每次出现进⾏替换;不加g,表⽰只对搜索字符串的⾸次出现进⾏替换。
g放在命令开头,表⽰对正⽂中所有包含搜索字符串的⾏进⾏替换操作。