【发布时间】:2016-07-14 07:07:47
【问题描述】:
对于我使用的两种模式之间的字符串替换:
我要更改的字符串:<name>FOO</name>
我用这个:
s#(<name>).*?(</name)#\1xxxxxxxxxxx\2#g;
我正在寻找解决方案,当第一个模式存在于两行时:
<attributes>
<name>AUTOR</name>
<value>FOO</value>
<type>1</type>
</attributes>
我想替换BAR
我已经尝试过这样的事情,但没有结果:
s#(AUTOR</name>\n\r<value>).*?(</value)#\1xxxxxxxxxxx\2#g;
编辑:
我被说服使用XMLStarlet 而不是SED。
【问题讨论】:
-
如果您给我们一个有效的 XML 文件,我们可以给您一个使用 XML 解析器来执行此操作的解决方案。
sed实用程序不适合解析和修改 XML 数据。 -
Obligatory link 到关于这个的著名 StackOverflow 帖子。