3

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

即转这个:

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

进入这个

.... foo(bar ....

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

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

3 回答 3

11

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

于 2009-02-19T21:55:01.417 回答
6

嘎。从命令行,不少。元字符解释的层次太多了。

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

于 2009-02-19T21:55:08.530 回答
0

cjm 的 回答可能是最好的。如果您必须在命令行中执行此操作,请尝试使用quotemeta()或元引用转义序列 (\Q...\E)。这在 bash 提示符下对我有用:

perl -pe "s/\Q\(\E/(/g" ./file
于 2009-02-20T03:15:21.800 回答