更换第一行后,sed将追加下一行

时间:2015-05-16 04:41:29

标签: linux bash shell unix sh

我想使用USERNAME / PASSWORD

替换以下属性文件代码中的sedawk
jdbc.connection.driver_class=com.ibm.as400.access.AS400JDBCDriver
jdbc.connection.username=USERNAME
jdbc.connection.password=PASSWORD

jdbc.minPoolSize=1
jdbc.maxPoolSize=15

我使用以下脚本尝试了它

sed -i -e "s/^${JDBC_USER_KEY}=.*/${JDBC_USER_KEY}=${DATABASE_USER_NAME}/" \
       -e "s/^${JDBC_PASSWORD_KEY}=.*/${JDBC_PASSWORD_KEY}=${DATABASE_PASSWORD}/"  database.properties

其中:

JDBC_USER_KEY=jdbc.connection.username
DATABASE_USER_NAME=TEST
JDBC_PASSWORD_KEY=jdbc.connection.password
DATABASE_PASSWORD=TEST

但是,输出是:

jdbc.connection.driver_class=com.ibm.as400.access.AS400JDBCDriver
jdbc.connection.username=TESTjdbc.connection.password=TEST

jdbc.minPoolSize=1
jdbc.maxPoolSize=15

该值已被替换,但下一行“jdbc.connection.password = TEST”已被上一行加上。

我在Google上搜索了很多但没有找到任何解决方案。

我也试过awk(见下文):

awk 'BEGIN{ FS="=";OFS="=" } {if($1==pname) $2=newval; print $0,"\n"}' pname="$property_name" newval="$new_value" $ARTIFACTS_HOME/properties/$1 >> $ARTIFACTS_HOME/properties/test.properties

$property_namejdbc.connection.username$new_valueTEST

请帮忙!

0 个答案:

没有答案