日期:2014-05-16 浏览次数:20682 次
linux中如何替换文件中的字符串
?
方法有二:
?
(一)通过vi编辑器来替换。
参考博文:
http://www.linuxdiyf.com/viewarticle.php?id=99843
http://kingaragorn.iteye.com/blog/467308
?
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
?
(二)Sumly法直接替换文件中的字符串。(此法不用打开文件即可替换字符串,而且可以批量替换多个文件。)
参考博文: http://easytech.iteye.com/blog/316948
例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”
?
?
?