我必须修改包含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
等于上面提到的图像名称。
希望现在清楚它是如何工作的。