如何在Perl正则表达式中逃脱左派?

时间:2009-02-19 21:51:14

标签: regex perl shell replace

如果我有一个包含一些转义的parens的文件,如何使用Perl用未转义的paren替换所有实例?

即。转过来:

.... foo\(bar ....

进入这个

.... foo(bar ....

我尝试了以下操作,但收到了此错误消息:

perl -pe "s/\\\(/\(/g" ./file
Unmatched ( in regex; marked by <-- HERE in m/\\( <-- HERE / at -e line 1.

3 个答案:

答案 0 :(得分:11)

你忘记了反斜杠对shell的意义也是如此。尝试使用单引号而不是双引号。 (或者将您的脚本放在一个文件中,您无需担心shell引用。)

答案 1 :(得分:6)

尔加。从命令行,不能少。方式解释的方式太多了。

尝试用单引号替换双引号,看看是否有帮助。

答案 2 :(得分:0)

cjm's answer可能是最好的。如果您必须在命令行中执行此操作,请尝试使用quotemeta()metaquoting escape sequence (\ Q ... \ E)。这对我来说是一个bash提示符:

perl -pe "s/\Q\(\E/(/g" ./file