首页 > 代码库 > 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常用命令(替换)