2013-12-20 53 views
3

我试图执行一个简单的搜索并在命令行中进行替换。草莓Perl RegEx,Windows 7

我有一个名为Test1.txt的文件。内容是“今天过得怎么样?”

在命令行中,我导航到文本文件所在的文件夹:C:\ perl。

这里是我发出的命令,并将结果/消息我越来越:

perl -pi.bak -e 's/doing/feeling/g' Test1.txt 

这将创建备份,但没有明显的变化就是个Test1.txt做,即使它出现的文件被修改就Windows资源管理器而言。

perl -pi.bak -e "BEGIN{@ARGV=<Test1.txt>} s/doing/feeling/g" 

这使得变化和创建备份,但我得到的消息: -i在命令行上没有使用的文件名,从标准输入

读书有没有用使用-i的方式命令行上的文件名?我在其他地方发现了BEGIN语法作为在Windows中执行此操作的方式,但是在没有获取此消息的情况下,没有其他方法可以做到这一点吗?

回答

3

不知道为什么,但使用双引号而不是单引号使其工作。

perl -pi.bak -e "s/doing/feeling/g" Test1.txt 
+0

从我读过的内容来看,双引号表示解释,而单引号表示不解释。但是,不确定在这种情况下有什么不同。 –

+1

@DrewRush'cmd.exe'不会将单引号视为字符串分隔符。在上面链接的问题的接受答案中有一个很好的解释。 – ThisSuitIsBlackNot