使用bash脚本添加/删除xml标签

前端之家收集整理的这篇文章主要介绍了使用bash脚本添加/删除xml标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个我想使用bash脚本进行配置的xml文件。例如,如果我有这个xml:
<a>

  <b>
    <bb>
        <yyy>
            Bla 
        </yyy>
    </bb>
  </b>

  <c>
    <cc>
      Something
    </cc>
  </c>

  <d>
    bla
  </d>
</a>

(删除机密信息)

我想编写一个bash脚本,将删除< b> (或评论它),但保持其余的xml完好无损。我是整个脚本的新东西。我想知道有没有人可以给我一个提示,我应该研究一下。

我以为可以使用sed,除了sed是一个线编辑器。我认为很容易删除< b>标签,但我不确定sed是否能够删除< b>之间的所有文本。标签

我还需要写一个脚本来添加删除的部分。

这在sed中并不难,因为sed也适用于范围。

尝试这个(假设xml在一个名为foo.xml的文件中):

sed -i '/<b>/,/<\/b>/d' foo.xml

-i会将更改写入原始文件(使用-i.bak保留原始文件的备份副本)

该sed命令将对范围指定的所有行执行动作d(删除)

# all of the lines between a line that matches <b>
# and the next line that matches <\/b>,inclusive
/<b>/,/<\/b>/

所以,用简单的英文,这个命令将删除< b>之间的行之间的所有行并且带有< / b>的行

如果你想排除这些行,请尝试以下方法之一:

# block comment
sed -i 's/<b>/<!-- <b>/; s/<\/b>/<\/b> -->/' foo.xml

# comment out every line in the range
sed -i '/<b>/,/<\/b>/s/.*/<!-- & -->/' foo.xml

猜你在找的Bash相关文章