gpt4 book ai didi

xml - 使用 sed 替换 xml 标签

转载 作者:行者123 更新时间:2023-12-04 03:05:29 24 4
gpt4 key购买 nike

我们有一个 jenkins 服务器,其中有太多作业,并且大多数作业都将 Build 触发器作为 Poll SCM。我想删除所有作业的触发器。寻找一种简单的方法来做到这一点。我看到每当设置构建触发器属性时,config.xml 都会有这个 -

<triggers>
<hudson.triggers.SCMTrigger>
<spec>
# poll infrequently and rely on Stash webhooks to trigger builds
@daily
</spec>
<ignorePostCommitHooks>false</ignorePostCommitHooks>
</hudson.triggers.SCMTrigger>
</triggers>

每当 Poll SCM 标志设置为 false 时,config.xml 中的相同元素如下-
 <triggers/>

我正在寻找一种使用 sed 替换上述触发器标记的简单方法,但无法使用 sed 获取它。

我从作业文件夹中尝试了这个,但它不起作用-
sudo find . -name "config.xml" -print0 | sudo xargs -0 sed -i '' -e 's|<triggers>.*<\/triggers|<triggers\/>|g'

所以基本上我想用这个替换上面的触发器元素的全部内容以及开始和结束触发器标签
<triggers/>

最佳答案

sed是一个流编辑器,逐行读取文件。您的模式跨越文件中的多行,这就是它从不匹配的原因。

您应该制作 sed在尝试替换之前将整个文件读入模式空间...

sed ':a;N;$!ba; s|<triggers>.*<\/triggers>|<triggers\/>|g' example.xml

...或使用其他工具(最好适用于 XML 文件,例如 xmlstarlet ):
xmlstarlet ed -O -u /triggers -v '' example.xml

关于xml - 使用 sed 替换 xml 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com