-1

我有这个文件:

<root>
  <theme>
  TO_BE_SUBSTITUED
  </theme>
  <anytag>
  foobar
  </anytag>
</root>

我想把它改成——

<root>
  <theme>
  Multiline_XML_Content_From_another_file
  </theme>
  <anytag>
  foobar
  </anytag>
</root>

我用过这个,它可以替换之间<theme> </theme>的所有内容SOMETEXT

sed -n '/<theme>/{p;:a;N;/<\/theme>/!ba;s/.*\n/SOMETEXT\n/};p' test.xml

但我想用第二个文件的内容替换 SOMETEXT 。我怎样才能做到这一点?

4

1 回答 1

1

使用(一个 XML 解析器):

$ xmlstarlet ed -u '//theme' -v 'SOMETEXT' file.xml

 输出

<?xml version="1.0"?>
<root>
  <theme>SOMETEXT</theme>
  <anytag>
  foobar
  </anytag>
</root>

如果要即时更换,请使用-L开关:

$ xmlstarlet ed -L -u '//theme' -v 'SOMETEXT' file.xml

检查http://xmlstar.sourceforge.net/

于 2020-06-12T17:51:27.040 回答