【问题标题】:using slash in Perl Command在 Perl 命令中使用斜杠
【发布时间】:2014-03-21 04:29:04
【问题描述】:

在我要运行的命令下方。

perl -pi -w -e 's//apps/LIVE/appl/xx/11.5.0//$XXTOP//g;'  prog.txt

这里,source 和 replacement 都有斜线。

如何处理?

-- 更新

我尝试使用建议的花括号和波浪号。

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.

【问题讨论】:

    标签: perl replace find slash


    【解决方案1】:

    解决了: 解决方案:

    perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{\$XXTOP}g;' prog.txt

    【讨论】:

      【解决方案2】:

      您是否希望文本 $XXTOP 出现在输出中。在这种情况下转义 $ - {\$XXTOP}

      perl -pi -w -e 's{apps/LIVE/appl/xx/11.5.0}{\$XXTOP}g;'  prog.txt
      

      Perl 认为$XXTOP 是一个 Perl 变量。

      如果要扩展环境变量,请使用$ENV{$XXTOP}

      【讨论】:

        【解决方案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
        

        【讨论】:

        • 错误:名称“main::XXTOP”仅使用了一次:-e 第 1 行可能出现拼写错误。在 -e 第 1 行使用未初始化的值, 块 1。在 -e 使用未初始化的值e 第 1 行, 块 2.
        • -w '导致'警告,它告诉您变量 $XXTOP 以前没有定义。既然它是单线的,那么您认为该价值从何而来?如果您想要替换中的实际 $ 符号,请使用反斜杠对其进行转义。即:s~/apps/LIVE/appl/xx/11.5.0/~\$XXTOP/~g;
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-22
        • 2021-07-17
        • 1970-01-01
        • 1970-01-01
        • 2021-09-18
        • 1970-01-01
        相关资源
        最近更新 更多