2009-11-17 38 views
0

我試圖做一些批量替換/有一個相當複雜的圖案複雜的批量更換的Linux

到目前爲止,我找到模式爲:

find '(' -name '*.php' -o -name '*.html' ')' -exec grep -i -n 'hello' {} + 

我想替換的字符串是目前如下:

<img src="/some/path/to/somewhere/hello" /> 

,其中用於圖像的路徑,但變化總是包含子字符串「你好」末

我想抓住的路徑和執行替換如下:

<img src="<?php myfunction('(/some/path/to/somewhere/)'); ?>" /> 

什麼將一個很好的方式來執行呢?

任何幫助將不勝感激。 。

回答

0

-exec cat '{}' | sed s/<img src="(/some/path/to/somewhere/)hello" />/<img src="<?php myfunction('(\1)(constant)'); ?>" />/ > /tmp/output; mv /tmp/output '{}' ';' 

逃逸的空間,「和/符號與backslahes更換-exec grep .....在sed的搜索和替換模式作爲sed的喜好

舉例來說,這將提取/路徑/:

echo "<img src=\"/path/hello\"" | sed "s/<img\ src=\"\(\/path\/\)hello/\1/" 
+0

這似乎是一個很好的方法,唯一的就是如上所述,路徑從文件到文件改變,所以我沒有一個獨特的路徑,這可以是/ some/path/to/somewh////這裏/路徑/到/ someother/... – Mike 2009-11-17 18:51:36

+0

替換爲。*然後,像回聲「 Dmitry 2009-11-17 18:54:40

+0

我推薦。*?因爲您可以在一行上有兩個img標籤... – Benj 2009-11-17 19:09:55