“?開發人員有時會大批量替換文件內容,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;