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

Le
Francois Lafont
Bonjour à tous,

Sur une Debian Squeeze, j'ai ça :

-
$ echo 'salut toi' | grep -E 'saluts+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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #24318891
Francois Lafont , dans le message
$ 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.
Francois Lafont
Le #24319901
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
Nicolas George
Le #24319991
Francois Lafont , dans le message
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.
Nicolas George
Le #24320001
Francois Lafont , dans le message
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.
Francois Lafont
Le #24320151
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
Publicité
Poster une réponse
Anonyme