Puis-je m'aider à exécuter la commande ci-dessous. J'ai aussi essayé d'échapper aux guillemets simples mais pas de chance.Perl regex guillemets simples
perl -pi.bak -e 's/Object\.prototype\.myString='q'//' myfile.html
Puis-je m'aider à exécuter la commande ci-dessous. J'ai aussi essayé d'échapper aux guillemets simples mais pas de chance.Perl regex guillemets simples
perl -pi.bak -e 's/Object\.prototype\.myString='q'//' myfile.html
Les guillemets doubles doivent travailler:
perl -pi.bak -e "s/Object\.prototype\.myString='q'//" myfile.html
Vous pouvez ou ne voulez pas un modificateur g
sur ce regex. Et vous voudrez probablement faire un diff
après pour vous assurer que vous n'avez pas manqué le HTML.
Ceci est ce qui a fonctionné pour moi. Je voulais enlever la citation et quelques autres caractères (espaces, parenthèses, -,.) De la variable 'nom': prxchange ("s/| - | \. | \ (| \) | \ '//", - 1, nom) –
Le problème n'est pas avec Perl, mais avec votre shell. Pour voir ce qui se passe, essayez ceci:
$ echo 's/Object\.prototype\.myString='q'//'
s/Object\.prototype\.myString=q//
Pour le faire fonctionner, vous pouvez remplacer chaque citation simple avec '\''
, comme ceci:
$ echo 's/Object\.prototype\.myString='\''q'\''//'
s/Object\.prototype\.myString='q'//
ou vous pouvez enregistrer quelques caractères en écrivant simplement:
$ echo 's/Object\.prototype\.myString='\'q\''//'
s/Object\.prototype\.myString='q'//
ou même simplement:
$ echo 's/Object\.prototype\.myString='\'q\'//
s/Object\.prototype\.myString='q'//
ou même:
$ echo s/Object\\.prototype\\.myString=\'q\'//
s/Object\.prototype\.myString='q'//
guillemets doubles, comme suggested by mu is too short, travailleront ici aussi, mais peuvent causer des surprises indésirables dans d'autres situations, puisque de nombreux caractères généralement trouvés dans le code Perl, comme $
, !
et \
, ont signification particulière à la coque même à l'intérieur de guillemets doubles.
Bien sûr, une autre solution consiste à remplacer les guillemets simples dans votre regexp avec les codes octaux ou hexagonaux \047
ou \x27
au lieu:
$ perl -pi.bak -e 's/Object\.prototype\.myString=\x27q\x27//' myfile.html
Dans mon cas, la recommandation pour '\ x27' semble la plus simple et fiable - a bien fonctionné! – zeroasterisk
\ Q ... \ E ne fonctionne pas non plus – user1018279