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

时间:2014-11-20 10:39:57

标签: linux bash perl

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

阅读本文后: Find and Replace Inside a Text File from a Bash Command

我使用了以下行

perl -pi -e "s/myparam/$MY_VAR/g" /res/raw/configuration.xml

但问题是MY_VAR包含一个网址(类似https://stackoverflow.com/questions/ask),其中包含/,并且根本不会替换该字符串。

我假设我不需要编写一个可以找到并替换所有/的脚本,并且有一种简单的方法可以解决它。

由于

2 个答案:

答案 0 :(得分:1)

您可以将此sed用于备用分隔符:

sed -i.bak "s~myparam~$MY_VAR~g" /res/raw/configuration.xml

Perl也允许使用相同的内容:

perl -pi -e "s~myparam~$MY_VAR~g" /res/raw/configuration.xml

答案 1 :(得分:1)

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

或将$MY_VAR放在命令行上,而不是将其插入perl one liner,

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