作業系統 : centos7.3.1611_x64
python 版本 : 2.7.5
編碼過程中有時候會遇到在多個原始檔中存在同乙個變數名(比如 : writebuffer),需要替換為新的變數名(比如 : write_buffer)的問題。 怎麼能方便快捷的解決該問題呢?
sed和grep結合使用可以替換當前資料夾多個檔案的內容。
格式 :
sed -i 's/原字串/新字串/g
' `grep -rl 原字串 所在目錄`
示例**:
sed -i 's/writebuffer/write_buffer/g
' `grep -rl writebuffer ./*
`
使用python指令碼可以實現替換當前資料夾多個檔案的內容。
替換單個檔案的**如下:
defdoreplace(fpath,src,dst):
newconent,bflag = ""
,false
with open(fpath,"rb
") as fin:
for line in
fin :
if line.find(src) == -1:
newline =line
else
: bflag =true
newline =line.replace(src,dst)
newconent +=newline
ifnot bflag : return
none
fpath
with open(fpath,"wb
") as fout:
fout.write(newconent)
return none
替換多個檔案僅需新增目錄遍歷**。
完整示例**如下:
新增可執行許可權:
chmod a+x replacemulti.py
使用示例:
./replacemulti.py writebuffer write_buffer
將當前資料夾中所有 writebuffer 替換為 write_buffer
也可以將 replacemulti.py 放入 /usr/local/bin/ 目錄:
[root@local ~]# mv replacemulti.py /usr/local/bin/[root@local ~]# replacemulti.pyusage : replacemulti srcstr dststr
replace current
dirfiles
[root@local ~]#
該指令碼在windows下也可以使用,將 replacemulti.py 所在目錄加入環境變數即可。
好,就這些了,希望對你有幫助。
批量替換多檔案字串問題.rst
歡迎補充
linux sed 批量替換字串
一月 21,2014 no comments linux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 例如 我要把 charset gb2312 替換為 charset utf 8,執行...
linux sed 批量替換字串
inux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 解釋一下 i 表示inplace edit,就地修改檔案 r 表示搜尋子目錄 l 表示輸出匹配的檔名 這個命令組合很強大,要注意備份...
linux sed 批量替換字串
linux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 例如 我要把 charset gb2312 替換為 charset utf 8,執行命令 sed i s charset gb23...