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
上記のイメージ名に相当します。
これで、どのように機能するかが明確になったと思います。