Linux 使用bash替换文本文件中的字符串

Linux 使用bash替换文本文件中的字符串,linux,bash,perl,Linux,Bash,Perl,我正在尝试在linux中使用脚本替换文件中的字符串 读完这篇文章: 我用了下面这句话 perl -pi -e "s/myparam/$MY_VAR/g" /res/raw/configuration.xml 但问题是MY\u VAR包含一个url(类似),其中包含/,它根本不替换字符串 我假设我不需要编写一个脚本来查找和替换所有的/,有一个简单的方法来解决它 谢谢您可以将此sed与备用分隔符一起使用: sed -i.bak "s~myparam~$MY_VAR~g" /res/raw/con

我正在尝试在linux中使用脚本替换文件中的字符串

读完这篇文章:

我用了下面这句话

perl -pi -e "s/myparam/$MY_VAR/g" /res/raw/configuration.xml
但问题是
MY\u VAR
包含一个url(类似),其中包含
/
,它根本不替换字符串

我假设我不需要编写一个脚本来查找和替换所有的
/
,有一个简单的方法来解决它


谢谢

您可以将此sed与备用分隔符一起使用:

sed -i.bak "s~myparam~$MY_VAR~g" /res/raw/configuration.xml
Perl
也允许同样的so使用:

perl -pi -e "s~myparam~$MY_VAR~g" /res/raw/configuration.xml
或者将
$MY_VAR
放在命令行上,而不是将其插入perl一行程序中

perl -pi -e 'BEGIN{$s = shift} s/myparam/$s/g' $MY_VAR /res/raw/configuration.xml

您还可以在Perl中使用备用分隔符。是的,我只是在将其添加到答案之前先验证它。谢谢。
$ENV{MY_VAR}
将是使用shell变量的自然方式。@TLP tnx供评论。
perl -pi -e 'BEGIN{$s = shift} s/myparam/$s/g' $MY_VAR /res/raw/configuration.xml