我正在尝试用“。$ VAR”替换字符串“ABC”。运行以下命令。
perl -p -i -e "s/ABC/\.\$VAR\./g" *
这使得字符串变为“..”而不是“。$ VAR”。请问有人能告诉我这里我做错了什么吗?
答案 0 :(得分:1)
答案 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' *