co*at will match "coat" OR "cat" <-- ah bon ?? [REGEX] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 23-07-2014 à 20:30:08
ligne 4, tu as pas le a de co*at, alors qu'il est présent dans les exemples
aussi, grep, le shell et autres, n'utilise pas les regex par défaut
(option -r dans les commandes en général)
Marsh Posté le 24-07-2014 à 00:18:44
bien sûr que si, grep utilise les regex, c'est ça raison d'être !
par contre, le shell, lui, n'utilise pas du tout les regex (à moins de le spécifier expressément dans des tests entre [[ avec l'opérateur =~), mais des caractères génériques (glob).
Citation : option -r dans les commandes en général |
r comme ringard ? ou ignare !
quand on sait pas...
Marsh Posté le 24-07-2014 à 07:32:56
Tu cherches une sanction ?
Marsh Posté le 24-07-2014 à 07:34:48
kazord44 a écrit : (option -r dans les commandes en général) |
-r c'est plutôt pour indiquer que la commande doit chercher récursivement dans les répertoires.
Marsh Posté le 24-07-2014 à 07:37:44
Par rapport à grep, il suffit de lire le manpage
en particulier la section
Citation :
-F, --fixed-strings -G, --basic-regexp -P, --perl-regexp |
Marsh Posté le 24-07-2014 à 10:50:38
Okok, j'a beau mettre toutes les differentes options de regex, dans aucun cas mon grep n'interprete le '*' comme les manuels que j'ai cités plus haut le disent.
Citation : % ls |
Marsh Posté le 24-07-2014 à 13:31:14
Salut,
doublebeurre a écrit : Bonjour, |
Mais comme ça, si :
$ ls c*at |
IgnarE avec un E… quand on sait pas...
Marsh Posté le 24-07-2014 à 13:32:41
ReplyMarsh Posté le 24-07-2014 à 16:01:37
odon4 a écrit : ls | grep -E 'co*at' |
Oui voila , en fait, que ce soit Extended ou Basic regex, ca marche selon la definition, c'est donc les regex du shell qui ne sont pas les regex "standard" decrites dans les bouquins.
Marsh Posté le 25-07-2014 à 05:28:44
ignare avec un e, c'est corrigé. merci.
ça vous fait pas bondir les gars qui envoient les autres dans le mur ?
Citation : c'est donc les regex du shell qui ne sont pas les regex "standard" decrites dans les bouquins. |
je me répète : le shell n'utilise pas les regex, mais des caractères génériques.
Marsh Posté le 25-07-2014 à 07:23:13
T'es lourd. Si tu cherches à tomber sur tous les gens qui font des erreurs dans leur réponse de cette manière, ta place n'est pas ici.
C'est clairement mon dernier avertissement. Compris ?
Marsh Posté le 25-07-2014 à 18:22:20
quand on se trompe, on revient faire amende honorable, et corriger ses dires erronés, on ne va pas pleurer sa mère à la modération.
Marsh Posté le 25-07-2014 à 19:40:42
Tu peux me dire quel est ton problème ? un moderateur n aurait pas le droit de consulter et participer aux topics sans alerte comme tout forumeur ?!
Ici, on est cordial et on n'insulte pas !
Maintenant si tu ne peux changer ton comportement je t invite à aller voir ailleurs !
Marsh Posté le 23-07-2014 à 17:22:41
Bonjour,
en vérifiant la théorie dans plusieurs manuels, je suis tombé sur cette définition du wildcard:
* : Match any number (or none) of the single character that immediately precedes it.
Classic Shell Scripting, O'Reilly
J'avoue que le "or none" m'a paru baroque.
En regardant ailleurs:
The regex * means "zero or more occurrences." The star is a suffix operator meaning it follows the expression. Another way of looking at this is that the star means the preceding expression is OPTIONAL.
Subject contains reg. expr. "co*at"
Will match "coat" OR "cat."
http://gravity.tbates.org/reg-101.html
Du coup je me suis jeté sur mon terminal pour voir si j'avais halluciné ou pas depuis des années que j'utilise '*' dans mes expressions, et non, co*t ne matche pas 'cat'.
Quelqu'un peut tirer ca au clair ??