gpt4 book ai didi

regex - 如何使用sed替换字符串中间的匹配字符

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:32 26 4
gpt4 key购买 nike

我有一个 XML 文件“datasources.xml”

<item-map group="org.base" datasource="localderby"/>
<item-map group="org.base.pos" datasource="localderbypos"/>
<item-map group="org.base.hr" datasource="localderbyhr"/>

并且需要类似这样的输出

<item-map group="org.base" datasource="localpostgres"/>
<item-map group="org.base.pos" datasource="localpostpos"/>
<item-map group="org.base.hr" datasource="localposthr"/>

所以我已经通过命令产生了输出

sed -e 's/datasource="localderby"/datasource="localpostgres"/g' -e 's/datasource="localderby([a-z])*"/datasource="localpost*/g' datasources.xml

通过第一个表达式,我得到了我想要的“localpostgres”,但第二个表达式丢失了。任何人都可以帮忙,请指教?感谢转发。

最佳答案

使用扩展正则表达式 (sed -r) 和 + 代替 * 和分组:

sed -r -e 's/datasource="localderby"/datasource="localpostgres"/g' -e 's/datasource="localderby([a-z]+)"/datasource="localpost\1"/g' datasources.xml

关于regex - 如何使用sed替换字符串中间的匹配字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34716930/

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