sed:查找并替换字符串,但不是超级字符串

sed:查找并替换字符串,但不是超级字符串,sed,Sed,我有一个文件env,看起来像 旧版数据库服务器=10.0.0.1 服务器=10.1.1.1 这是我的sed命令: sed-e“s/SERVER=.*/SERVER=$INSTANCE_IP/g;n”$ENV_FILE>$ENV_FILE.tmp和&mv$ENV_FILE.tmp$ENV_FILE 问题是sed也在取代LEGACY\u DATABASE\u SERVER,这不是我想要的。我只想更换服务器 (LEGACY_DATABASE_SERVER是服务器的超级字符串,我只想替换服务器) 我错

我有一个文件
env
,看起来像

旧版数据库服务器=10.0.0.1 服务器=10.1.1.1 这是我的sed命令:

sed-e“s/SERVER=.*/SERVER=$INSTANCE_IP/g;n”$ENV_FILE>$ENV_FILE.tmp和&mv$ENV_FILE.tmp$ENV_FILE

问题是
sed
也在取代
LEGACY\u DATABASE\u SERVER
,这不是我想要的。我只想更换
服务器

(LEGACY_DATABASE_SERVER是服务器的超级字符串,我只想替换服务器)


我错过了什么

大概,您希望确保sed知道“SERVER”位于行的开头:

sed -e "s/^SERVER=.*/SERVER=$INSTANCE_IP/g;n" $ENV_FILE > $ENV_FILE.tmp && mv $ENV_FILE.tmp $ENV_FILE

sed
有一个就地选项,而不是在最后处理所有临时文件。我刚才试过了。我在OSX上。我得到这个错误sed:1:“env”:无效的命令代码。
sed -e "s/^SERVER=.*/SERVER=$INSTANCE_IP/g;n" $ENV_FILE > $ENV_FILE.tmp && mv $ENV_FILE.tmp $ENV_FILE