在我想要运行的命令下面。
perl -pi -w -e 's//apps/LIVE/appl/xx/11.5.0//$XXTOP//g;' prog.txt
这里,源和替换都有斜杠。
如何处理?
- 更新
我尝试过花括号和波浪线。
perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{$XXTOP}g;' prog.txt
在这种情况下,美元签到给予问题,否则它工作正常..
Error:
Name "main::XXTOP" used only once: possible typo at -e line 1.
Use of uninitialized value at -e line 1, <> chunk 1.
Use of uninitialized value at -e line 1, <> chunk 2.
答案 0 :(得分:3)
使用另一个分隔符:
perl -pi -w -e 's~/apps/LIVE/appl/xx/11.5.0/~$XXTOP/~g;' prog.txt
您可以通过%ENV
访问环境变量,例如:
perl -pi -w -e 's~/apps/LIVE/appl/xx/11.5.0/~$ENV{XXTOP}/~g;' prog.txt
答案 1 :(得分:0)
您希望文本$XXTOP
出现在输出中吗?在这种情况下逃避$ - {\$XXTOP}
perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{\$XXTOP}g;' prog.txt
Perl认为$XXTOP
是Perl变量。
如果您想要扩展环境变量,请使用$ENV{$XXTOP}
答案 2 :(得分:0)
解决: 解决方案:
perl -pi -w -e的{apps / LIVE / appl / xx / 11.5.0} {\ $ XXTOP} g;' prog.txt