如果我有一个包含一些转义括号的文件,如何使用 Perl 将所有实例替换为未转义的括号?
即转这个:
.... foo\(bar ....
进入这个
.... foo(bar ....
我尝试了以下但收到此错误消息:
perl -pe "s/\\\(/\(/g" ./file
Unmatched ( in regex; marked by <-- HERE in m/\\( <-- HERE / at -e line 1.
你忘记了反斜杠对 shell 也有一定的意义。尝试使用单引号而不是双引号。(或者将您的脚本放在一个文件中,您无需担心 shell 引用。)
嘎。从命令行,不少。元字符解释的层次太多了。
尝试用单引号替换双引号,看看是否有帮助。
cjm 的 回答可能是最好的。如果您必须在命令行中执行此操作,请尝试使用quotemeta()或元引用转义序列 (\Q...\E)。这在 bash 提示符下对我有用:
perl -pe "s/\Q\(\E/(/g" ./file