2013-12-20 91 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