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

Linux 批量字符串替换命令(sed, perl )与vi文本下字符替换命令

2012-08-10 09:26 1176 查看
1. 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/mry_production/mry_production2/g" ./*.sql

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

2. sed 命令
用sed命令可以批量替换多个文件中的字符串。


sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`


例如:我要把mahuinan替换为huinanma,执行命令:
sed -i "s/mahuinan/huinanma/g" 'grep mahuinan -rl /www'


具体格式如下:
sed -i "s/oldString/newString/g" `grep oldString -rl /path`


实例代码:
sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl /usr/aa`

sed -i "s/大小多少/日月水火/g" `grep 大小多少 -rl ./`


3. vi\vim 文本命令



: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: