expression reguliere dans un grep - Linux et OS Alternatifs
Marsh Posté le 18-01-2003 à 13:06:20
Cette commande semble mieux marcher. 
 
ls -al /usr/include/ | grep "^-.* \<\w\{4\}\>\.\?\w*\*\?$" 
 
Tentative d'explications : 
'^-' 
= un '-' en debut de ligne (fichiers ordinaires) 
 
'.*' 
= suite de caractères quelconques (les diff. infos du ls -al) 
 
' \<' 
= début de mot (debut du nom de fichier) 
 
'\w\{4\}' = '[[:alnum:]]\{4\}' = '[a-zA-Z0-9]\{4\}' 
= 4 caractères alphanumériques (nom du fichier) 
 
'\>' 
= fin de mot 
 
'\.\?' 
= un point facultatif 
 
'\w*' = '[[:alnum:]]*' = '[a-zA-Z0-9]*' 
= des caracteres alphanumériques quelconques facultatifs (l'extension) 
 
'\*\?' 
=> une '*' facultative a la fin du fichier (ci celui-ci est un 
fichier executable -je crois-) 
 
'$' 
=> fin de ligne 
 
Marsh Posté le 18-01-2003 à 13:32:50
| jultey a écrit : Salut,  | 
 
 
Dans ton modèle, tu ne précises pas le début ou la fin de la chaine. Donc le grep cherche 4 caractères (hors ponctuation, c'est à dire en particulier sans . ) qui se suivent. 
le utmp.h  sort bien  
mais un un.deu.troi   marcherait aussi .... 
Marsh Posté le 18-01-2003 à 13:40:51
| minusplus a écrit : 
   | 
 
 
J'hesitais a crier "minnnnuusssplusss onnnn t'apppeeelllleuhhhh"   
 
Marsh Posté le 18-01-2003 à 13:41:57
ça me fait du mal de répondre avec kêk chose qui n'est pas une Regexp d'ailleurs ! 
Marsh Posté le 18-01-2003 à 14:51:19
| jultey a écrit : Salut,  | 
 
 
C'est pas expression réguliere, mais expression rationelle. 
C'est uen faute de traduction qui est malheureusement rentrée dans le language courant 
 
Marsh Posté le 28-11-2002 à 00:18:27
Salut,
J'ai un p'tit problème avec une expression régulière dans un shell...
Je voudrais lister les fichiers qui ont un nom de 4 caracteres et eventuellement une extension quelconque (XXXX[.extension])
J'y suis arrivé avec cette commande :
ls /home/jultey/essai/ | grep "\<[a-zA-Z0-9]\{4\}\>"
qui rend bien ce que j'attends :
1324.to
allo.lpg
argp
argz.h
stab.h
time.h
titi
toto
utmp.h
Mais je ne comprend pas ou le shell voit que l'extension est facultative...
puisqu'entre le {4} et le \> je n'ai rien mit...
Si quelqu'un pouvait m'éclairer...
Merci