xmlstarlet / bash:如何直接在文件中替换元素的值?

时间:2015-08-15 15:02:04

标签: xml bash xmlstarlet

我的XML文件就像:

.visuallyhidden {
    visibility: hidden;
}

我找到了一个xmlstarlet命令来更改元素的值,例如对于元素 alive ,它将是:

<?xml version="1.0" encoding="UTF-8"?>
<agents>
  <agent id="1">
    <aname>pi1</aname>
    <alive>1</alive>
    <scenarios>1,2,3</scenarios>
  </agent>
  <agent id="4">
    <aname>pi4</aname>
    <alive>0</alive>
    <scenarios>2,5,6,25,77,88,99</scenarios>
  </agent>
...many more
</agents>

结果:

xmlstarlet ed -u "/agents/agent[@id=1]/alive" -v 0 agents.xml

结果只是打印到sdtout。我正在寻找一个解决方案(比如SED -i)直接替换文件中的值而不是将stdout重定向到如下文件:

...
<agent id="1">
        <aname>pi1</aname>
        <alive>0</alive>
        <scenarios>1,2,3</scenarios>
</agent>
...

现在我遍历整个XML文档,每次更改值时,我都会创建一个新的XML文件(需要很长时间)。但这不是一个合适的解决方案。谢谢你的任何想法!

0 个答案:

没有答案