【问题标题】:Replace text in XML multi line tags using sed使用 sed 替换 XML 多行标签中的文本
【发布时间】:2017-10-07 04:18:38
【问题描述】:

我是 sed 的新手,在用一些 XML 代码查找和替换 XML 标记之间的多行 XML 代码时遇到了麻烦。这是 XML 代码的示例

 <List>
   <User>
      <Id>1234</Id>
         <Info>
            <Id>11</Id>
         </Info>
    </User>
 </List>

我想把List标签之间的XML代码替换成..

<List>
   <Replace>
     <Id> 223 <Id>
   </Replace>
 </List>

我用过 sed "s/\(&lt;Id&gt;\).*\(&lt;\/Id\)/\19999\2/" input.xml &gt; output.xml 但它适用于单行但不适用于多行。列表标签之间的内容可能会改变,也可以是内联的。所以不能回复特定的模式,但需要只依赖标签。任何帮助或指针将不胜感激?

【问题讨论】:

标签: xml sed


【解决方案1】:

如果你真的想无视林奇的建议,可以这样做,但你需要重新美化它:

sed -e ':a;N;$!ba' -e 's#<List.*</List>#<List>\n<Replace>\n<Id> 223 <Id>\n</Replace>\n</List>#' input.xml > output.xml

它可能需要 GNU 版本的 sed。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2021-09-25
    相关资源
    最近更新 更多