我一直在尋找一個單線perl命令的時間來放置一個腳本,它將執行從類似於sed的文件中讀取多模式替換。是否有一行perl等價於:sed -n -f multipatternfile textfile?
試圖做一個Perl的一個班輪多模板搜索使用多重圖像文件上的文本文件替換:
文本文件:
apples bananas oranges
blueberries walnuts granola
multipatternfile:
s/blueberries/chocolate/p
s/bananas/raisins/p
使用SED我能做到這一點單行:
$ sed -n -f multipatternfile textfile
apples raisins oranges
chocolate walnuts granola
使用perl我想這一個班輪:
$ perl -pi -F multipatternfile textfile
syntax error at multipatternfile line 2, near "s/bananas/raisins/p"
Execution of multipatternfile aborted due to compilation errors.
但Perl版本在第二圖案扼流圈不管我在那裏的第二圖案。
格式化文件格式的方式有什麼問題嗎?
在你問之前,我不能使用sed,因爲sed沒有非貪婪的正則表達式。
你試過'sed的 - P'?某些版本的sed支持類似Perl的正則表達式。 – Lynn 2014-11-21 21:27:19
出於興趣 - 你爲什麼需要它是一個班輪?如果你有一個模式文件,你是否可以沒有Perl腳本? – Sobrique 2014-11-21 21:33:42
@nooodl是的。你碰到這個着名的sed錯誤: sed -n -r -f /tmp/testpatterns/tmp/testfile sed:file/tmp/testpatterns第2行:'s'命令的RHS上無效的引用\ 1 – androidin 2014-11-21 21:56:57