我不知道任何Perl,但我偶爾會使用「perl pie」(perl -pi -e
)來執行批處理正則表達式查找和替換操作,例如,在文件夾perl -pi -e 's|a|e|g' *.txt
的所有.txt文件中將a
更改爲e
。執行前測試perl -pi -e單線程的最佳方法是什麼?
有沒有辦法做一個「空運行」,以便我可以預覽更改?我經常使用具有正面/負面看法/向後看,組參考等的中度複雜的正則表達式,並且我經常不能100%確定我在第一次運行時是否正確。這將是精彩有類似rename.pl的-n
標誌,它不會改變任何東西,只會輸出所做的更改。
目前,我的策略是隻使用ack,它接受一個Perl正則表達式,以確保我的匹配字符串是正確的,並從那裏開始。有沒有更好的辦法?像rename -n
?
如果我遺失了一些非常棒的東西,也可以打開perl
以外的東西,儘管我偏愛它的正則表達式格式。
非常感謝!
感謝您的回覆,但如上所述,我只想輸出更改(而不是整個文件內容)。 – n8henrie 2014-10-07 04:38:00
如果要打印發生更改的特定行,則需要添加'-n'而不是'-p'參數。 'perl -nle'打印如果s | a | e | g'文件' – 2014-10-07 06:56:57
太好了,謝謝!下面通過顯示哪個文件正在匹配,使它更接近rename.pl輸出,但這肯定回答了這個問題。 'perl -ne'if(s | a | e | g){print「$ ARGV \ t」; print}'* .txt' – n8henrie 2014-10-07 16:12:25