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