我有一个我想使用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