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="[^/]*/\([^"]*\)".*

ここで一致する前のすべてに一致します.*=) 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上記の画像名と同じです。

今、それがどのように機能するかが明らかになったことを願っています。

関連情報