Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

grep : différence de comportement sur Debian Lenny et sur Debian Squeeze

5 réponses
Avatar
Francois Lafont
Bonjour à tous,

Sur une Debian Squeeze, j'ai ça :

----------------------------------------------
$ echo 'salut toi' | grep -E 'salut\s+toi'
salut toi
----------------------------------------------

ce qui correspond à ce que j'attends comme résultat. Maintenant, sur une
Debian Lenny, la même commande exactement ne me produit absolument
aucune sortie, ce qui me surprend beaucoup.

Comment cela se fait-il ? Les expressions régulières étendues ne sont
pas les mêmes entre les deux systèmes ? Ça me semblerait bien curieux.
Je me disais que peut-être ça pouvait être une histoire de locale, mais
sur les deux systèmes je suis en fr_FR.UTF-8. Bref, si vous avez des
idées...

Merci d'avance pour votre aide.

--
François Lafont

5 réponses

Avatar
Nicolas George
Francois Lafont , dans le message
<4f5e7079$0$1983$, a écrit :
$ echo 'salut toi' | grep -E 'saluts+toi'



Le motif s n'est pas standard, et n'apparaît pas dans le man de GNU grep
2.10, bien qu'elle soit supportée.

Si tu veux compter sur ce genre d'extension de manière fiable, utilise grep
-P.
Avatar
Francois Lafont
Le 12/03/2012 23:42, Nicolas George a écrit :

Le motif s n'est pas standard, et n'apparaît pas dans le man de GNU grep
2.10, bien qu'elle soit supportée.



Ok merci.

Si tu veux compter sur ce genre d'extension de manière fiable, utilise grep
-P.



Sur la Lenny, j'obtiens ça :

------------------------------------------------------------
$ echo 'salut toi' | grep -P 'saluts+toi'
grep: Support for the -P option is not compiled into this
--disable-perl-regexp binary.
------------------------------------------------------------

Et effectivement, dans la page man de grep version Lenny, j'ai un
sérieux avertissement :

« -P, --perl-regexp
Interpret PATTERN as a Perl regular expression. This is highly
experimental and grep -P may warn of unimplemented features. «

En fait, j'ai l'impression qu'il faut que je passe par ça pour que ça
marche :

------------------------------------------------------------
$ echo 'salut toi' | grep -E 'salut[[:space:]]+toi'
salut toi
------------------------------------------------------------

Et là, aussi bien en Squeeze qu'en Lenny, ça fonctionne. Si j'ai bien
compris ça s'appelle les classes de caractères POSIX et comme c'est
POSIX c'est censé être portable, c'est bien ça ?


--
François Lafont
Avatar
Nicolas George
Francois Lafont , dans le message
<4f5f21f4$0$14664$, a écrit :
Et là, aussi bien en Squeeze qu'en Lenny, ça fonctionne. Si j'ai bien
compris ça s'appelle les classes de caractères POSIX et comme c'est
POSIX c'est censé être portable, c'est bien ça ?



Oui. Et c'est basique, donc tu pourrais te passer du -E s'il n'y avait pas
le + après.
Avatar
Nicolas George
Francois Lafont , dans le message
<4f5f21f4$0$14664$, a écrit :
Et là, aussi bien en Squeeze qu'en Lenny, ça fonctionne. Si j'ai bien
compris ça s'appelle les classes de caractères POSIX et comme c'est
POSIX c'est censé être portable, c'est bien ça ?



Oui. Et c'est basique, donc tu peux te passer du -E.
Avatar
Francois Lafont
Le 13/03/2012 11:37, Nicolas George a écrit :

Oui. Et c'est basique, donc tu pourrais te passer du -E s'il n'y avait pas
le + après.



Ok, merci bien Nicolas.
À+

--
François Lafont