sed 替换_sed命令批量替换文件内容

 开发人员有时会大批量替换文件内容,sed命令是一个很好用的工具。

01

暴力替换方式

近期有个临时任务,将系统中所有"帐"替换为"账",那"帐"和"账"有啥区别呢;

1、账的部首是贝;帐的部首是巾。

2、账是关于货币、货物出入zhi的记载;帐是由布制成的遮拦物。

3、用途:账是用在金钱方面的字眼,例如账簿,账目等;帐是用在遮挡物中,例如蚊帐,帐钩等。

4、来历:账原始时代贝壳是代金钱单位,账和金钱相关,所以部首是贝;帐出于《释名》。

大家看完后大概知道为什么要做替换了吧,

核心系统所有"帐"替换为"账"  核心系统将 帐 更新为 账_测试案例

要替换的程序文件涉及上千个,一个一个打开文件进行修改耗时又费力;

执行如下命令进行替换:

sed -i "s/帐/账/g" `grep -rl "帐" ` ./

替换完后查看

find . -name "*.*|xargs grep "帐"

已经没有 "帐"字了

但是这种方式替换有个问题,有点暴力,指定目录下所有文件都会被替换,包括隐藏文件,如果环境中配置有SVN,

会发现替换完的文件没有版本差异,版本也无法提交。

所以如果环境中配有SVN千万不要用这种方式进行替换

切记 不要将.svn隐藏目录替换了,指定要替换的文件目录和文件类型进行替换

02

安全替换方式

以下命令可以避免上面的问题:

find . -name "*.SQC" |xargs sed -i "s/帐/账/g"

find . -name "*.ccc" |xargs sed -i "s/帐/账/g"

find . -name "*.c"   |xargs sed -i "s/帐/账/g"

find . -name "*.h"   |xargs sed -i "s/帐/账/g"

若涉及表的替换:可以用如下命令:

--select * from pubrspcode where tbdesc = '%帐%';

update pubrspcode set tbdesc = replace(tbdesc,'帐','账') where tbdesc = '%帐%'; 

commit;

31a7d5e8681ef57377bb46145927370f.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值