Expressions régulières : besoin d'aide, svp

Bonjour à tous,

Je suis en train d’étudier les expressions régulières et je n’arrive pas à comprendre une chose.
J’ai un fichier de test :

$ cat ./test alpha A 1 bravo B 2 charlie C 3 delta D 5 echo E 5 $
dans lequel je fais une recherche (grep) avec le motif d’exclusion ‘[^o]’ (qui veut dire, si je ne me trompe pas, “affiche toutes les lignes du fichier ./test qui ne contiennent pas le caractère o”)
Sauf que quand j’exécute ma recherche, je n’obtiens pas le résultat escompté :

$ grep '[^o]' ./test alpha A 1 bravo B 2 charlie C 3 delta D 5 echo E 5 $
A titre d’info, la recherche inverse fonctionne bien :

$ grep 'o' ./test bravo B 2 echo E 5 $
et celle-là aussi :

$ grep 'o\>' ./test bravo B 2 echo E 5 $
Quelle est mon erreur ? (Le shell utilisé est Bash)

Merci d’avance pour votre aide.
Eric

Ton expression match les lignes dont au moins 1 caractères est différent de o.
Pour les lignes sans o : ‘^[^o]*$’

Merci P’tit g pour ta réponse ! :clap:

[quote=“P’tit g”]Ton expression match les lignes dont au moins 1 caractères est différent de o.[/quote]J’ai encore du mal à me faire à ce raisonnement. :blush:

Tu ne connaîtrais pas, par hasard, un site exhaustif sur les expressions régulières, stp ? (parce que j’en ai trouvé quelques uns qui en parlent mais… soit c’est de façon pas très poussée [ils survolent le sujet] soit ils parlent d’expressions longues de 3kms [pour montrer leurs puissances] mais elles ne sont pas expliquées !!!)

Ou sinon, pour ceux que ça pourrait intéresser aussi, je viens de découvrir une autre possibilité : l’option -v de grep (qui inverse la condition de test)

$ grep -v 'o' ./test alpha A 1 charlie C 3 delta D 5 $

Exact, il y a aussi l’option -v de grep.

Avec plaisir.

Désolé, mais je n’ai malheureusement rien à te proposer.

Je vois totalement de quoi tu parles.