加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 19:10:18 所属栏目:安全 来源:网络整理
导读:我有一个我想使用bash脚本进行配置的xml文件。例如,如果我有这个xml: a b bb yyy Bla /yyy /bb /b c cc Something /cc /c d bla /d/a (删除机密信息) 我想编写一个bash脚本,将删除 b (或评论它),但保持其余的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读