2

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

echo "some string=oldvalue" | sed 's/\(some string\=\)(.*)/\1newvalue/'

它工作正常,我只是想知道是否有更好,更短的方法来完成同样的事情

TIA

4

2 回答 2

2

如果some_string是一个常数值,只需使用:

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/'

如果您想保留该行的其余部分(例如,在空格之后),请使用:

pax> echo "string=old # comment" | sed 's/string=[^ ]*/string=newvalue/'
string=newvalue # comment

这通过将项目限制=为非空格字符来工作。

于 2012-04-10T06:16:15.820 回答
1

如果该值不能包含任何=s,那么它会更短:

sed 's/=.*/=NEW VALUE/'
于 2012-04-10T06:18:13.420 回答