是否有一行perl相当于:sed -n -f multipatternfile textfile?

时间:2014-11-21 21:17:35

标签: regex perl sed

我一直在寻找一个单行perl命令的时间来放入一个脚本,该脚本将从类似于sed的文件中读取多重替换。

尝试使用multipattern文件对文本文件执行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没有非贪婪的正则表达式。

1 个答案:

答案 0 :(得分:-1)

好的,我想出来了:

multipatternfile:

s/blueberries/chocolate/p;
s/bananas/raisins/p;

使用perl,您需要在模式的末尾添加分号:

$ perl -p multipatternfile textfile
apples raisins oranges
chocolate walnuts granola