2014-07-15 81 views
1

我需要更換一些PHP腳本中的文本的幾個塊...查找和使用文件作爲輸入搜索替換外殼和更換

我有:

find . -name 'products.php' -exec grep --silent 'TEXT_TO_FIND' {} \; -exec ls {} \; -exec sed -i 's/TEXT_TO_FIND/REPLACE_TEXT/g' {} \; 

這項工作,但我有大約2歐3行文字..

,所以我記得創建find.txt我發現文本,然後用替換文本另一replace.txt ..

我的問題是.. 如何使用這個文件,在上面的命令輸入..

類似:

find . -name 'products.php' -exec grep --silent `cat find.txt` ... 

問候 布魯諾

+0

是 「使用bash」 真正的需求? –

+0

不,不是必需的,但是由於所有文件都在生產中的服務器上,所以我認爲它是更好的方式,對吧? 任何消化? –

+0

@BrunoBraga你可以重新說一下你的問題。目前,你所問的內容完全不清楚。例如爲什麼你的第一個命令不起作用? '但是我有大約2歐3行的文字......「沒有意義。 – BroSlow

回答

0

你可能不得不去的東西比面向更多的純鐵數據慶典/ coreutils的。如果你有機會到Python在您的網站:

#!/bin/python 
with open("find.txt","r") as f: 
    fs = f.read().trim("r") 

with open("replace.txt","r") as f: 
    rs = f.read().trim() 


# you probably have to loop other the following lines 
# Once for every file: 
with open("src.txt","r") as f: 
    src = f.read() 

modified = src.replace(fs,rs) 
if modified := src: 
    with open("src.txt","w") as f: 
     f.write(modified) 

這僅僅是一個起點。你可能不得不改進它。如果您遇到困難,請隨時提出其他問題!


這裏是我的測試成績單:

sh$ cat src.txt 
AAA 
BBB 
CCC 
DDD 
CCC 
DDD 
EEE 
FFF 
sh$ cat find.txt 
CCC 
DDD 
EEE 
sh$ cat replace.txt 
XXX 
YYY 
ZZZ 
sh$ python m.py 
sh$ cat src.txt 
AAA 
BBB 
CCC 
DDD 
XXX 
YYY 
ZZZ 
FFF