我需要替换匹配string = value的值 所以这就是我想出来的:
echo "some string=oldvalue" | sed 's/\(some string\=\)(.*)/\1newvalue/'
它工作正常,我只是想知道是否有更好,更短的方法来完成相同的
TIA
答案 0 :(得分: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
这可以通过将=
之后的项目限制为非空格字符来实现。
答案 1 :(得分:1)
如果该值不能包含任何=
s,则执行起来更短:
sed 's/=.*/=NEW VALUE/'