变量‘&’中的 Sed 特殊字符

变量‘&’中的 Sed 特殊字符

抱歉,这个问题很简单,但是我找不到该怎么做:我在变量中有一个特殊的字符“&”,必须在 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"

相关内容