Grep et regexp (y a-t-il une erreur ?)

Résolu
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
salut a tous,
j'assaye de lancer une commande avec grep et je ne comprend pas pourquoi elle ne marche pas.
je voudrais afficher les lignes du fichier /etc/proftpd/proftpd.conf qui designent un umask (y compris si elle sont commentees)
La commande suivante demande les llignes qui commence par des espaces, des tabulation et des # suivi du mot cle umask (quelle que soit la casse) :
~$ grep -e '^[ \t#]*[Uu][Mm][Aa][Ss][Kk]' /etc/proftpd/proftpd.conf
# Umask 022 is a good standard umask to prevent new files and dirs
umask                           0113 0006
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   umask                           0113 0006

Malheureusement, elle affiche des lignes qui ne m'interessent pas (lignes 1 et 3). La commande suivante impose que le mot umask soit suivi d'espaces, de tabulations et de chiffres
~$ grep -e '^[ \t#]*[Uu][Mm][Aa][Ss][Kk][ \t01234567]*' /etc/proftpd/proftpd.conf
# Umask 022 is a good standard umask to prevent new files and dirs
umask                           0113 0006
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   umask                           0113 0006

Le probleme, c'est que dans les lignes qui ne m'interessent pas sont toujours la. Donc je voudrais qu'apres lesdits chiffres, la ligne se termine... Pourtant la commande suivante ne renvoi rien !
~$ grep -e '^[ \t#]*[Uu][Mm][Aa][Ss][Kk][ \t01234567]*$' /etc/proftpd/proftpd.conf

Quelqu'un peut m'explique ou est l'erreur ?
Merci d'avance
Santiago

3 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,
grep 'umask.*[ [:digit:]]$'
grep 'umask[ [:space:]]*[ [:digit:]]'
;-))

PS. Enlever l'espace entre les 2 crochets ouvrants, ils ne sont là que pour palier à l'interprétation qu'il en est fait par CCM ;-((
0
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   209
 
merci jipicy ta syntaxe m'en apprend encore sur les regexp.
cependant, cette proposition ne change rien au probleme.
si j'exige que la ligne se termine apres les chiffres, je n'ai plus aucun resultat :
~$ grep 'umask[[:space:]]*[[:digit:]]' /etc/proftpd/proftpd.conf
# umask 022 is a good standard umask to prevent new files and dirs
umask                           0113 0006
~$ grep 'umask[[:space:]]*[[:digit:]]$' /etc/proftpd/proftpd.conf
~$


0
santiago69 Messages postés 477 Date d'inscription   Statut Membre Dernière intervention   209
 
j'ai trouve !
merci pour tes indices jipicy
grep -e '^[[:space:]#]*[Uu][Mm][Aa][Ss][Kk][[:space:][:digit:]]*$' /etc/proftpd/proftpd.conf


0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Re-

Plutôt que de t'embêter avec les minuscule/majuscule, utilises l'option "-i" de grep.
0