我必須修改包含xml資料的文檔;我無法設定的一項修改sed
。
我必須修改以下表達式:
<Bild href_fmt="Bilder/Bildschirmfoto%202012-06_fmt.jpeg"
href="file:///user/folder/Desktop/Bildschirmfoto%202012-06-18%20um%2013.17.45.png"></Bild>
到:
<a href="http://test.server.at/media/somefolder/Bildschirmfoto%202012-06_fmt.jpeg"
target="_blank"><img src="http://test.server.at/media/somefolder/Bildschirmfoto%202012-06_fmt.jpeg"
alt="" width="350" height="" /></a>
我的問題:我無法複製Bildschirmfoto%202012-06_fmt.jpeg
以產生正確的新條目。 HTML 標記位於該行中的某個位置,因此我無法複製整行...
我如何使用sed
其他 Linux 命令來做到這一點?
答案1
sed 's@.*href_fmt="[^/]*/\([^"]*\)".*@<a href="http://test.server.at/media/somefolder/\1target="_blank"><img src="http://test.server.at/media/somefolder/\1" alt="" width="350" height="" /></a>@'
我們需要提取裡面的圖像名稱href_fmt="Bilder/Bildschirmfoto%202012-06_fmt.jpeg"
。因此首先我們要為此編寫模式:
.*href_fmt="[^/]*/\([^"]*\)".*
其中匹配matches.*
之前的任何內容=) matches dir name與我們的圖像名稱匹配。 用於建立群組並在將來 使用它來匹配該行的其餘部分,現在我們將根據下一個表達式替換該行中的所有內容:href_fmt="
href_fmt="
href_fmt="
[^/]*/
Bilder/
\([^"]*\)
\(\)
\1
".*
<a href="http://test.server.at/media/somefolder/\1target="_blank"><img src="http://test.server.at/media/somefolder/\1" alt="" width="350" height="" /></a>
其中\1
等於上面提到的圖像名稱。
希望現在清楚它是如何運作的。