用所有文件中的变量替换字符串

时间:2014-05-16 17:45:07

标签: linux perl

我正在尝试用“。$ VAR”替换字符串“ABC”。运行以下命令。

perl -p -i -e "s/ABC/\.\$VAR\./g" *

这使得字符串变为“..”而不是“。$ VAR”。请问有人能告诉我这里我做错了什么吗?

3 个答案:

答案 0 :(得分:1)

  1. 你不需要逃避。在替换方面,因为它不是 图案
  2. 只需在身体周围使用单引号即可 不插入$ VAR

答案 1 :(得分:1)

使用单引号:

perl -i -pe 's/ABC/.\$VAR\./g' *

否则,你只是在shell上转义$ VAR而不是perl级别。如果你想使用双引号,你需要使用3个反斜杠。

perl -i -pe "s/ABC/.\\\$VAR\./g" *

答案 2 :(得分:1)

Perl变量以$开头,以及shell变量。您在\之前正确插入了$VAR,但它只能阻止变量在shell级别上的扩展,而不是Perl级别。添加更多反斜杠或切换到单引号。

perl -i~ -pe "s/ABC/.\\\$VAR./g" *

perl -i~ -pe 's/ABC/.\$VAR./g' *