【发布时间】:2014-05-17 01:54:41
【问题描述】:
我正在尝试将字符串“ABC”替换为“.$VAR”。运行以下命令。
perl -p -i -e "s/ABC/\.\$VAR\./g" *
这使得字符串为“..”而不是“.$VAR”。请谁能告诉我我在这里做错了什么??
【问题讨论】:
我正在尝试将字符串“ABC”替换为“.$VAR”。运行以下命令。
perl -p -i -e "s/ABC/\.\$VAR\./g" *
这使得字符串为“..”而不是“.$VAR”。请谁能告诉我我在这里做错了什么??
【问题讨论】:
【讨论】:
使用单引号:
perl -i -pe 's/ABC/.\$VAR\./g' *
否则,您只是在 shell 上转义 $VAR 而不是 perl 级别。如果要使用双引号,则需要使用 3 个反斜杠。
perl -i -pe "s/ABC/.\\\$VAR\./g" *
【讨论】:
Perl 变量以$ 开头,还有shell 变量。您在$VAR 之前正确插入了\,但它只会阻止shell 级别的变量扩展,而不是Perl 级别的扩展。添加更多反斜杠或切换到单引号。
perl -i~ -pe "s/ABC/.\\\$VAR./g" *
或
perl -i~ -pe 's/ABC/.\$VAR./g' *
【讨论】: