OVH Cloud OVH Cloud

grep : trailing backslash

1 réponse
Avatar
Laurent
Salut,

J'utilise le grep de cygwin sous windows et je suis tombé sur l'erreur
"trailing backslash" en tapant quelque chose comme grep -E "\\" fichier
Par contre grep -E "\\toto" fichier ne fait pas l'erreur et trouve bien
"\toto".

J'ai donc le sentiment que le problème vient du fait que le \" à la fin est
interprété bizarrement alors que mon intention était "d'échapper" le
caractère "\".

Qui pourrait m'expliquer ce qu'il se passe ? Et me dire quelle est la bonne
syntaxe pour rechercher "\". J'ai déjà vu que "\\\\" a l'air de marcher mais
je ne comprends pas pourquoi...

Merci !

1 réponse

Avatar
Fred
Salut,

J'utilise le grep de cygwin sous windows et je suis tombé sur l'erreur
"trailing backslash" en tapant quelque chose comme grep -E "" fichier
Par contre grep -E "toto" fichier ne fait pas l'erreur et trouve bien
"toto".

J'ai donc le sentiment que le problème vient du fait que le " à la fin est
interprété bizarrement alors que mon intention était "d'échapper" le
caractère "".

Qui pourrait m'expliquer ce qu'il se passe ? Et me dire quelle est la bonne
syntaxe pour rechercher "". J'ai déjà vu que "\" a l'air de marcher mais
je ne comprends pas pourquoi...

Merci !





Essaie
grep -E ''

Les différents programmes (shell, grep...) interprètent chacun le
backslash comme un caractère de banalisation. Le fait d'utiliser les
doubles quotes n'inhibe pas l'interprétation faite par le shell.
Donc le shell voit et l'interprète comme un seul et le passe en
paramètre à grep qui attend le caractère suivant.
En utilisant des simples quotes, on supprime l'interprétation par le shell.
Dans le cas du "toto", le shell passe toto à grep et comme t n'a pas
de signification particulière pour grep (ça ne représente pas TAB), il
l'interprète bien t
"\" marche aussi car le shell l'interprète , le passe à grep qui
l'interprète
Voilà, voilà
A+
Fred