首页 > 代码库 > linux常用命令(替换)
linux常用命令(替换)
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 命令可以替换多层目录
linux常用命令(替换)