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 :

gerer les commentaires (#) dans le parsing d'un fichier de conf


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 32
    Par défaut [RESOLU]gerer les commentaires (#) dans le parsing d'un fichier de conf
    Bonjour,

    Je cherche a automatiser la generation de fichiers de conf et pour cela, je dois parser des fichiers contenant des infos.
    Or pour etre propre, je souhaite commencer par ne pas traiter les lignes commencants par # de facon a pouvoir commenter mon fichier.
    Mais, mes cours de shell sont bien loin, et je n'arrive pas a traiter le # sans mélanger le caractere # et ce qu'il represente en systeme (un truc vide).

    Voici ce que j'ai ecrit pour selectionner les lignes qui m'interressent lors du traitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #!/bin/sh
    while read ligne
    do
    echo $ligne | cut -c 1 | read first_car
     if [ $first_car='#' ]
       then
              echo "$first_car"
       else
              echo ok!
     fi
     
    done  < test.txt
    echo fin
    et le résultat est peu probant car il réagit comme s'il n'y avait que des commentaires d'un part et d'autre part, il sort sur la sortie 7 lignes vides correspondant a mes 7 lignes du fichier de test. Sur lequel poourtant il n'y a que 3 commentaires.

    Quelqu'un a une idée de la marche a suivre svp?

  2. #2
    Lps
    Lps est déconnecté
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 84
    Par défaut Astuce
    Si tu veux toutes les lignes, sauf celles débutant par le caractère # :


  3. #3
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 32
    Par défaut testé et approuvé
    Bon, bin c'est effectivement pas mal d'utiliser grep
    Je te remercie bcp.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 32
    Par défaut script shell problématique
    Nom du script: generateur de dhcpd.conf

    Compatible avec: Bash

    Descriptif: permet de generer la fin du fichier dhcpd.conf afin de ne pas avoir a editer les hosts systématiquement en parsant un fichier contenant un suite de données sous la forme MAC=XX:XX:XX:XX:XX
    host=nom de l'hote

    Pré-requis:Aucun

    Bon, j'essaye d'avancer, et je galere pas mal.
    j'ai écris ça.
    C'est sans doute pas tres optimisé , et loin d'être parfaitement propre, mais en plus, ca ne marche pas...
    Donc le but ultime sera de generer un bout de fichier contenant les mac et les hosts pour completer /etc/dhcp3/dhcp.conf
    Et déjà, pour commencer, mon test de confirmation d'ecrasement me sort systematiquement si je commente pas le exit 0. (ligne 5)

    Ensuite, je n'arrive pas a comparer ma valeur obtenue par le wc avec le x dans la boucle while (ligne 17)

    Merci a ceux qui auraient deux minutes pour m'aider a redresser mon pov script

    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
    24
    25
    26
    27
     
    1 #!/bin/sh
    2 echo 'Ce script va écraser le fichier actuel /etc/dhcp3/MAC.conf.'
    3 echo 'Voulez-vous continuer? (O/N, par défaut N)'
    4 read confirmation
    5   if [ $confirmation!=O ]
    6     then
    7 #    exit 0
    8      echo je sors
    9   fi
    10   if [ -f /etc/dhcp3/MAC.conf ]
    11     then
    12     mv /etc/dhcp3/MAC.conf /etc/dhcp3/MAC.conf-old
    13   fi
    14 echo #fichier de conf $date >> /etc/dhcp3/MAC.conf
    15 wc -l test.txt | cut -c 1 | read nbligne
    16 x=0
    17 until [ $x -eq $nbligne ]
    18 do
    19 x=$x+1
    20 grep -v ^# $1 | grep host | colrm 1 5 | read tabhost[$x]
    21 grep -v ^# $1 | grep MAC  | colrm 1 4 | read tabMAC[$x]
    22 
    23 done
    24
    25 echo ${tabhost[*]}
    26 echo ${tabMAC[*]}

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 124
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 124
    Par défaut
    Salut !

    De tête (suis sous Ouinouin, là, peux pas tester...), pour la ligne 5 essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       if [ $confirmation != 'O' ] # simple quote, pas sûr
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       if [ $confirmation != "O" ] # double quote, probable.
    Et attention à la casse lors de la saisie (mais ça tu le savais déjà, je suppose).
    Mes 2 cts,
    --
    jp

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    wc -l test.txt | cut -c 1 | read nbligne
    cela s'ecrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nbligne=$(wc -l test.txt | cut -c 1)
    la nbligne est initialiser avec le nombre de ligne (sur 1 caractere attention)

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/10/2008, 19h49
  2. Réponses: 2
    Dernier message: 02/09/2008, 13h16
  3. Autoriser les commentaires dans une feuille XSD
    Par Pitu45 dans le forum Valider
    Réponses: 1
    Dernier message: 27/08/2008, 09h56
  4. [Sql server 2000] gerer les erreurs dans une procedure
    Par lemagicien dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/03/2008, 21h15
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

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