如果我有一个包含一些转义的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.
答案 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