1. vi 模式下的替换命令:
s 表示替换(substitute),g表示全局搜索(global search)
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/(等同于 :g/vivian/s//sky/) 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/
2. 替换文件中的字符串内容:
find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g'
xargs:find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取
的一部分文件,然后是下一批,并如此继续下去。
perl:perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 脚本那样运行该代码。使用perl不生成转换过程中的中间文件,
执行起来很快, -i 参数直接原地编辑文件。
该命令会替换当前目录及子目录下所有符合条件的文件中符合规则的字符串。
3. 替换多个文件夹中的字符串:
sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
-i 参数 :直接在原文件上进行操作
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支持的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
注意:最后面的 "grep 原字符串 -rl 所在目录" 不是用单引号引起来的。而是用键盘中"~"所在键中的"`"引起来的。
sed 命令可以替换多层目录