Perl命令行搜索并用多个表达式替换

时间:2012-05-03 02:00:28

标签: perl

我正在使用Perl来搜索和替换多个正则表达式: 当我执行以下命令时,出现错误:

prompt> find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g' -pe 's/(\W)##/\1/g'
syntax error at -e line 2, near "s/(\W)##/\1/g"
Execution of -e aborted due to compilation errors.
xargs: perl: exited with status 255; aborting

多个-e在Perl中有效,那么为什么这不起作用?有解决方案吗?

1 个答案:

答案 0 :(得分:36)

允许多个-e

您错过了';'

find "*.cpp" | xargs perl -i -pe 's/##(\W)/\1/g;' -pe 's/(\W)##/\1/g;'

Perl语句必须以;结尾。 块中的最终语句不需要终止分号。 因此,没有-e的单个;可以使用,但如果您有多个;语句,则必须添加-e