[egrep] chaines ne contenant pas ...
InsAne0
-
crabs Messages postés 909 Statut Membre -
crabs Messages postés 909 Statut Membre -
Bonjour tout le monde,
J'aimerais savoir comment faire une expression régulière qui reconnaît les chaînes ne contenant pas une expression regulière.
Par exemple j'aimerais pouvoir filtrer avec egrep les fichiers finissant par ".wav", mais ne commençant pas par "sys".
Une solution que je n'aime pas serait de faire:
Car dans la liste suivante :
Je n'aurais que "gafdg.wav" et pas "sd.wav" car il a moins de trois lettres.
J'ai essayé des choses comme
Quelqu'un a une solution ou de la bonne doc' avec des exemples?
J'aimerais savoir comment faire une expression régulière qui reconnaît les chaînes ne contenant pas une expression regulière.
Par exemple j'aimerais pouvoir filtrer avec egrep les fichiers finissant par ".wav", mais ne commençant pas par "sys".
Une solution que je n'aime pas serait de faire:
ls | egrep "^[^s][^y][^s].*[.]wav$"
Car dans la liste suivante :
gafdg.wav sd.wav sysdf.wav sys.wav
Je n'aurais que "gafdg.wav" et pas "sd.wav" car il a moins de trois lettres.
J'ai essayé des choses comme
[^(sys)]sans résultat.
Quelqu'un a une solution ou de la bonne doc' avec des exemples?
1 réponse
-
Salut,
Une solution qui mange pas de pain :
- filtrer une première fois pour avoir les points wav
- filitrer une seconde fois pour supprimer ce qui commence par sysls | egrep ".*\\.wav$" | egrep -v "^sys.*"
A mon avis il est trop complexe d'essayer d'écrire dans une seule RE un truc
du genre qui marche avec ça mais pas avec ça, autant décomposer.
A+, crabs