sed 用于用新文本替换某些字符之间的文本



我有一个问题,我无法弄清楚。

我在xml文件中有这样的东西:

<tag desc="some desc can be different" dep="dep" >value</tag>

我想像使用 sed 一样更改它:

<tag desc="NEW DESC" dep="dep" >value</tag>

我的问题是:我可以使用 sed 将"<tag ... >"之间的文本替换为新文本吗?

感谢您的帮助:)

由于您没有尝试真正解析 xml sed 可以帮助您:

sed -i 's/(<tag[^>]*[ ]*desc[ ]*)=[ ]*"[^"]*"/1="NEW DESC"/g' input.xml

但是,如果您想拥有一个强大的解决方案,请使用xmlstarlet

xmlstarlet edit -L -u "//tag/@desc" -v "NEW DESC" input.xml

感谢您的快速回答:)

我做了这样的事情:

typeset repTagdesc='desc="NEW DESC" dep="dep"'
sed -i "s&(<tag).*(>.[0-9])&1 ${repTagdesc}2&" input.xml

这个解决方案可以吗?我不熟悉sed,这就是我问的原因。我检查它及其工作:

<tag>10</tag>
<tag desc="some desc" dep="dep">20</tag>
<tag desc="other desc" dep="dep">30</tag>

相关内容

  • 没有找到相关文章

最新更新