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

Résolu/Fermé
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 8 nov. 2008 à 13:51
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 8 nov. 2008 à 17:43
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
8 nov. 2008 à 14:15
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 mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
8 nov. 2008 à 15:43
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 mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
8 nov. 2008 à 16:02
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
8 nov. 2008 à 17:43
Re-

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