用sed或vi进行多文件替换的方法

需要对多个文件进行查找替换时,很容易想到用sed,但是由于不更改原文件,替换后需要先改名,然后再用更改的文件替换原文件,还是不太方便。其实vi中有更简便的方法,就是用argdo命令。可以用:help argdo查找其功能。
比如我需要在所有本目录下的.xml文件中的202.123.23.12 IP替换为localhost
可以用如下方法:
vi *.xml
:argdo %s/202.123.23.12/localhost/ge | update
其中update是直接替换覆盖原文件,若需要确认,则可使用
:argdo %s/202.123.23.12/localhost/gec | update
以下的Blog中有vi替换方法的详细叙述:
http://www.ibrahim-ahmed.com/2008/01/find-and-replace-in-multiple-files-in.html

另外,新版的sed提供了一种同样简便的多文件替换的方法,就是用带-i选项的sed(不过我猜想你需要查看你使用的sed版本是否支持-i选项),其方法是:
sed -i 's/202.123.23.12/localhost/g' *.xml
这样一条命令就完成了所有的替换操作!如果担心进行了错误替换,可以在-i命令后带后缀进行备份,比如:
sed -i.bak 's/202.123.23.12/localhost/g' *.xml
但应注意:替换命令后只需要有g命令,不能再加p命令。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值