您的位置:首页 > 运维架构 > Linux

linux替换字符串

2016-07-11 09:47 363 查看
(一)vi编辑器命令

vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用编辑软件进行替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。

:s/well/good/ 替换当前行第一个 well 为 good

:s/well/good/g 替换当前行所有 well 为 good

:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good

:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good

n 为数字,若 n 为 .,表示从当前行开始到最后一行

:%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good

:%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good

可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符

:s#well/#good/# 替换当前行第一个 well/ 为 good/

:%s#/usr/bin#/bin#g

可以把文件中所有路径/usr/bin换成/bin

(二)perl(不用打开文件,可替换多文件)

例1

执行命令:

perl -p -i -e "s/China/Sumly/g" /www/*.htm /www/*.txt

上面的意思是说将www文件夹下所有的htm和txt文件中的“China”都替换为“Sumly”

 

例2

执行命令:

perl -p -i -e "s/memory_production/memory_production2/g" ./*.sql

 

上面的意思是将当前目录下所有的sql文件中的“memory_production”替换成“memory_production2”

(三)sed 批量替换

  格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`

Svn中文网

  linux sed 批量替换多个文件中的字符串

  sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`

  例如:替换/home下所有文件中的www.admin99.net为admin99.net Bbs.Svn8.Com

  sed -i "s/www.admin99.net/admin99.net/g" `grep www.admin99.net -rl /home`
Bbs.Svn8.Com

  exp:sed -i "s/shabi/$/g" `grep shabi -rl ./` Svn8.Com

  2、自己额外附加 Svn8.Com

  2.1 将文件1.txt内的文字“garden”替换成“mirGarden”

  # sed -i "s/garden/mirGarden/g" 1.txt //sed -i 很简单

  2.2 将当前目录下的所有文件内的“garden”替换成“mirGarden” 

## sed -i "s/garden/mirGarden/g" `ls` //其实也就是ls出多个文件名而已
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: