抱歉,这个问题很简单,但是我找不到该怎么做:我在变量中有一个特殊的字符“&”,必须在 sed 中使用它。
例子:
#模板 .env
猫.env
我的秘密 = 变量我的秘密
导出MY_SECRET="2C&ga&8M&jy3&g&WE&U"
sed -i "s|VAR_MY_SECRET|$MY_SECRET|g" .env
新的 .env 文件
猫.env
MY_SECRET = 2CVAR_MY_SECRETgaVAR_MY_SECRET8MVAR_MY_SECRETjy3VAR_MY_SECRETgVAR_MY_SECRETWEVAR_MY_SECRETU
答案1
@Gordon Davisson 的评论应该有帮助。
一些处理正则表达式的应用程序支持引号开始\Q
和引号结束\E
,这使得转义元字符变得更加容易。Perl(如果可用)会像这样处理引号开始和引号结束:
echo "MY_SECRET = \"VAR_MY_SECRET\"" | perl -pe "s|VAR_MY_SECRET|\Q$MY_SECRET\E|g" > .env
cat .env
MY_SECRET = "2C\&ga\&8M\&jy3\&g\&WE\&U"