gpt4 book ai didi

regex - 如何使用 sed/perl/awk 查找和替换模式字符串?

转载 作者:行者123 更新时间:2023-12-04 14:29:46 26 4
gpt4 key购买 nike

我有一个文件 foo.properties 的内容如下

foo=bar
# another property
test=true
allNames=alpha:.02,beta:0.25,ph:0.03,delta:1.0,gamma:.5
在我的脚本中,我需要替换针对 ph 的任何值(bash 脚本不知道当前值)并将其更改为 0.5。所以文件应该看起来像
foo=bar
# another property
test=true
allNames=alpha:.02,beta:0.25,ph:0.5,delta:1.0,gamma:.5
我知道如果通过使用知道当前值可以很容易地完成 sed "s/\,ph\:0.03\,/\,ph\:0.5\,/" foo.properties但就我而言,我必须实际阅读 allNames 的内容。并搜索该值,然后在 for 循环中进行替换。其余的都处理好了,但我想不通 sed/ perl为此命令。
我尝试使用 sed "s/\,ph\:.*\,/\,ph\:0.5\,/" foo.properties和一些变化,但它没有用。

最佳答案

一个更简单的 sed 解决方案:

sed -E 's/([=,]ph:)[0-9.]+/\10.5/g' file

foo=bar
# another property
test=true
allNames=alpha:.02,beta:0.25,ph:0.5,delta:1.0,gamma:.5
我们在这里匹配 ([=,]ph:) (即 ,= 后跟 ph: )并在第 1 组中捕获。后面应该是 [0-9.] 的 1+字符来捕捉任何数字。作为替代,我们放了 \1回用 0.5

关于regex - 如何使用 sed/perl/awk 查找和替换模式字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69937434/

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