IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[SED] Automatisation de gestion d'un fichier de configuration Samba


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Par défaut [SED] Automatisation de gestion d'un fichier de configuration Samba
    Bonjour à tous,

    Je me casse un peu la tête sur l'automatisation de la gestion d'un fichier de configuration Samba.
    Par exemple, dans la conf suivante :

    [Foo]
    comment = "Partage de Foo"
    path = /home/Foo
    browseable = Yes
    read only = yes
    read list = @Foo
    write list = @Foo
    valid users = @Foo
    create mode = 0770
    directory mode = 0770
    force create mode = 0770

    [Bar]
    comment = "Partage de Bar"
    path = /home/Bar
    browseable = Yes
    read only = yes
    write list = @Bar
    valid users = @Bar
    create mode = 0770
    directory mode = 0770
    force create mode = 0770
    Je souhaite effacer toutes les lignes concernant le partage de [Foo]. Je pensais le faire avec Sed, mais je ne trouve pas la bonne syntaxe pour dire "efface à partir de [Foo] jusqu'à avant le [ de [Bar]". Je n'utilise pas souvent SED et je ne maîtrise pas les expressions régulières.

    Merci pour votre aide.

    Tiki

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $ cat foobar 
    [Foo]
    comment = "Partage de Foo"
    path = /home/Foo
    browseable = Yes
    read only = yes
    read list = @Foo
    write list = @Foo
    valid users = @Foo
    create mode = 0770
    directory mode = 0770
    force create mode = 0770
     
    [Bar]
    comment = "Partage de Bar"
    path = /home/Bar
    browseable = Yes
    read only = yes
    write list = @Bar
    valid users = @Bar
    create mode = 0770
    directory mode = 0770
    force create mode = 0770
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ sed '/\[Foo\]/,/^$/d' foobar 
    [Bar]
    comment = "Partage de Bar"
    path = /home/Bar
    browseable = Yes
    read only = yes
    write list = @Bar
    valid users = @Bar
    create mode = 0770
    directory mode = 0770
    force create mode = 0770

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Par défaut
    @zipe31 :

    Woah, merci. C'est super malin d'avoir pensé à utiliser ",/^$".
    Si je ne me trompe pas, cela signifie "la ligne vide suivante". Est-ce bien ça ?

    En général, mes fichiers de conf sont assez aéré et il existe un espace vide entre chaque section.
    Mais dans l'hypothèse où les section seraient collées (sans ligne vide), il existe une solution ?

    Tiki

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $ cat foobar 
    [Foo]
    comment = "Partage de Foo"
    path = /home/Foo
    browseable = Yes
    read only = yes
    read list = @Foo
    write list = @Foo
    valid users = @Foo
    create mode = 0770
    directory mode = 0770
    force create mode = 0770
    [Bar]
    comment = "Partage de Bar"
    path = /home/Bar
    browseable = Yes
    read only = yes
    write list = @Bar
    valid users = @Bar
    create mode = 0770
    directory mode = 0770
    force create mode = 0770
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ sed  '/\[Foo\]/{:z;N;/\]$/!bz;s/.*\n//}' foobar 
    [Bar]
    comment = "Partage de Bar"
    path = /home/Bar
    browseable = Yes
    read only = yes
    write list = @Bar
    valid users = @Bar
    create mode = 0770
    directory mode = 0770
    force create mode = 0770

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 23
    Par défaut
    Alors là, je sèche complètement sur la syntaxe. Mais ça me donne un sujet d'étude. Encore Merci.

    Tiki

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Quand le motif est trouvé, on applique les commandes qui se trouvent entre les accolades.

    On pose un étiquette pour s'y brancher ultérieurement.

    On ajoute la ligne suivant dans la mémoire principale de sed. Chaque ligne dans la mémoire tampon sera séparée par le caractère "\n"

    Si la ligne ne se termine pas par un crochet fermant, (le signe $ représente la fin de la ligne et le point d'exclamation la négation), on se branche à l'étiquette et on recommence…

    Quand l'expression précédente trouve un crochet fermant, on applique la commande de substitution qui supprime tout depuis le début de la ligne jusqu'à ce qu'elle rencontre le dernier caractère "\n" (= saut de ligne).

    Fin des commandes correspondants aux motif.

Discussions similaires

  1. [Débutant] Gestion d'un fichier de configuration avec des collections imbriquées
    Par tarzan68 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 15/07/2019, 17h18
  2. [Débutant] Automatiser la lecture d'un fichier de configuration
    Par Longrais dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 08/12/2006, 11h31
  3. [vb.net] gestion d un fichier de configuration
    Par rangdalf dans le forum Windows Forms
    Réponses: 6
    Dernier message: 20/02/2006, 14h24
  4. Réponses: 7
    Dernier message: 05/08/2005, 16h32
  5. Réponses: 8
    Dernier message: 06/07/2004, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo