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

时间:2010-03-02 21:53:23

标签: windows regex perl string

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

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

somevalue="!MYPASSWORD!"

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

echo %NEWPASSWORD%   <-- this would contain $abc12345$
perl -p -i.bak -e "s/!MYPASSWORD!/%NEWPASSWORD%/g" a.properties

完成后我想要a.properties:

somevalue="$abc12345$"

提前致谢

2 个答案:

答案 0 :(得分:13)

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

perl -p -i.bak -e "s'!MYPASSWORD!'%NEWPASSWORD%'g" a.properties

答案 1 :(得分:2)

我认为您从用户输入获取密码。为什么不在Perl中这样做而不必经历批处理,因为你已经在使用Perl?它更容易。然后,您可以使用Term::Inkey之类的模块来屏蔽密码和内容。