【问题标题】:Replacing a string with a variable in all the files [duplicate]用所有文件中的变量替换字符串[重复]
【发布时间】:2014-05-17 01:54:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: linux perl


    【解决方案1】:
    1. 你不需要逃跑。在替换方面,因为它不是 模式
    2. 只需在正文周围使用单引号,以便外壳 不插入 $VAR

    【讨论】:

    • 感谢您的信息:)
    【解决方案2】:

    使用单引号:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-03-22
        • 2013-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-18
        • 2015-12-21
        • 2011-04-17
        相关资源
        最近更新 更多