使用包含窗口上的美元符号的字符串进行Perl替换

use*_*633 2 regex windows string perl

我正在Windows上使用perl,并且我正在尝试使用perl来使用包含美元符号的windows变量替换文件中的占位符.有谁知道正确的用法是使它与美元符号一起使用.我尝试了各种各样的方法,似乎无法让它发挥作用.

例如,我有一个属性文件,其中包含一个令牌(!MYPASSWORD!),我正在尝试替换,如:

somevalue="!MYPASSWORD!"
Run Code Online (Sandbox Code Playgroud)

我有一个批处理文件,查找一个名为NEWPASSWORD的变量,其中包含密码$ abc12345 $,我想使用perl替换来替换如下的值.注意我可能并不总是知道$符号的位置,所以我无法逃脱它们.例如,另一个密码可能是abc $ 124 $ 563:

echo %NEWPASSWORD%   <-- this would contain $abc12345$
perl -p -i.bak -e "s/!MYPASSWORD!/%NEWPASSWORD%/g" a.properties
Run Code Online (Sandbox Code Playgroud)

完成后我想要a.properties:

somevalue="$abc12345$"
Run Code Online (Sandbox Code Playgroud)

提前致谢

Iva*_*uev 13

使用'的正则表达式分隔符符号.它将禁用所有变量替换:

perl -p -i.bak -e "s'!MYPASSWORD!'%NEWPASSWORD%'g" a.properties
Run Code Online (Sandbox Code Playgroud)

  • 好的DWIMing,伊万.另一种方法是不让shell填充环境变量的值:`s /!MYPASSWORD!/ $ ENV {NEWPASSWORD}/g` (3认同)