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

时间:2013-08-15 20:17:50

标签: sed

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

...

LEGACY_DATABASE_SERVER=10.0.0.1
SERVER=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_DATABASE_SERVER,这不是我想要的。我只想替换SERVER

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

我错过了什么?

1 个答案:

答案 0 :(得分:1)

据推测,你想确保sed知道“SERVER”在行的开头:

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