選択した単語をsedで複製して置き換える

選択した単語をsedで複製して置き換える

XML データを含むドキュメントを変更する必要がありますが、 では設定できなかった変更が 1 つあります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="[^/]*/\([^"]*\)".*

whereは、 matches =) .*の前の任意のものに一致し、dir 名に一致し、イメージ名に一致します。 はグループを作成するために使用され、将来的に は行の残りの部分に一致して、次の式に従って行内のすべてを置き換えます。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上記のイメージ名に相当します。

これで、どのように機能するかが明確になったと思います。

関連情報