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;

sed 替换_sed命令批量替换文件内容_第1张图片

你可能感兴趣的:(sed,替换,sed,替换文件内容)