改进sed中的regex以替换与string=value匹配的值

改进sed中的regex以替换与string=value匹配的值,sed,Sed,我需要替换一个与string=value匹配的值 这就是我想到的: echo "some string=oldvalue" | sed 's/\(some string\=\)(.*)/\1newvalue/' 它工作得很好,我只是想知道是否有更好、更短的方法来实现同样的目标 TIA如果某些字符串是常量值,只需使用: sed 's/some string=.*/some string=newvalue/' 根据以下记录: pax> echo "some string=oldvalue"

我需要替换一个与string=value匹配的值 这就是我想到的:

echo "some string=oldvalue" | sed 's/\(some string\=\)(.*)/\1newvalue/'
它工作得很好,我只是想知道是否有更好、更短的方法来实现同样的目标


TIA

如果
某些字符串
是常量值,只需使用:

sed 's/some string=.*/some string=newvalue/'
根据以下记录:

pax> echo "some string=oldvalue" | sed 's/some string=.*/some string=newvalue/'
some string=newvalue
<>但是你可能想考虑使用一个开始标记,这样你就不会拾取其他键:

sed 's/^some string=.*/some string=newvalue/'
如果要保留行的其余部分(例如,空格后),请使用:


这是通过将
=
后面的项目限制为非空格字符来实现的。

如果该值不能包含任何
=
字符,则可以缩短执行时间:

sed 's/=.*/=NEW VALUE/'

我刚刚遇到的另一个问题是,我忘了提到替换应该只针对“=”后面的内容,所以如果整行是some_string=oldvalue some_other_string=othervalue,我需要它只替换“oldvalue”。使用.*将替换“=”后面的整个剩余行,这绝对不是我需要的…@TuxSax,请参阅更新,这是限制
=
字符后面匹配的字符的问题。谢谢@paxdiablo!这就是我需要的
sed 's/=.*/=NEW VALUE/'