繁体   English   中英

如何用dyamic变量替换sed反向引用

[英]How to replace sed backreference with dyamic variable

我需要用我环境中存在的vars替换字符串。

例如,我现在在我的环境中有以下变量:

export APP_NAME=teste
export DB_DATABASE=dbname
export DB_USER=username

然后,我需要用这些变量中的值替换字符串,例如:

echo "APP_NAME=APP_NAME; DB_DATABASE=DB_DATABASE; DB_USER=DB_USER;" | sed -E "s/\b(\w+)\b=(\1)/\1=`echo \\${\\2}`/g"

然后是我期望的最终结果:

APP_NAME=teste; DB_DATABASE=dbname; DB_USER=username;

但我得到的一切是:

APP_NAME=${APP_NAME}
DB_DATABASE=${DB_DATABASE}
DB_USER=${DB_USER}

使用envsubst

echo "APP_NAME=APP_NAME; DB_DATABASE=DB_DATABASE; DB_USER=DB_USER;" | sed 's/=/="$/g;s/;/";/g' | envsubst 

输出:

APP_NAME="teste"; DB_DATABASE="dbname"; DB_USER="username";

见: man envsubst

任何POSIX awk:

$ echo "APP_NAME=APP_NAME; DB_DATABASE=DB_DATABASE; DB_USER=DB_USER;" |
    awk 'BEGIN{RS=ORS=";"; FS=OFS="="} /=/{$2=ENVIRON[$2]; print}'
APP_NAME=teste; DB_DATABASE=dbname; DB_USER=username;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM