2009-02-19 7 views
3

Si j'ai un fichier contenant des parenthèses échappées, comment puis-je remplacer toutes les instances avec un paren non échappé en utilisant Perl?Comment échapper un parent gauche dans une regex Perl?

-à-dire tourner ceci:

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

dans ce

.... foo(bar .... 

J'ai essayé ce qui suit, mais receivied ce message d'erreur:

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

Répondre

11

Tu oublies que antislashs signifient quelque chose à la coquille, aussi. Essayez d'utiliser des guillemets simples au lieu de guillemets doubles. (Ou placez votre script dans un fichier, où vous n'aurez pas à vous soucier de la citation de shell.)

+0

Gah, ne peut pas croire que je n'ai pas pensé à cela. Le vendredi ne peut pas arriver assez tôt. – dmercer

6

Gah. De la ligne de commande, pas moins. Trop de niveaux d'interprétation des métacaractères. Essayez de remplacer vos guillemets par des guillemets simples, voir si cela vous aide.

+0

Merci, vous êtes à environ 8 secondes de la réponse précédente. À votre santé – dmercer

Questions connexes