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 :

substituer les valeurs d'un ancien .conf et les attribuer à un nouveau .conf


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire support informatique
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire support informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut substituer les valeurs d'un ancien .conf et les attribuer à un nouveau .conf
    Bonjour, je débute dans la programmation et j'essaie de faire un script.

    J'ai un fichier avec une liste de données, voilà un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ######
    ######
    variable = valeur
    ######
    ######
    variable = valeur
    Pour l'instant j'ai réussi à faire un echo en ne prenant que ce qui m'intéresse, c'est à dire la "variable" situé avec le = et sa "valeur" après le =.

    Mon objectif est d'avoir un fichier "new" ne comportant au début que les "variables" et pouvoir à l'aide un fichier comportant variables et valeur, assigné au "new" les bonnes valeurs à la variable adéquate.

    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
    NEWREP=/root/new
    OLDREP=/root/old
    LISTE=liste.conf
     
    while read LINE
    do
    if [[ $LINE != '#'* ]] && [[ $LINE != "" ]]
    then
    VAR=${LINE%=*}
    VAL=${LINE#*=}
         if [[ $VAR != $VAL ]]
         then
         echo "-----"
         echo "VARIABLE = $VAR"
         echo "VALEUR = $VAL"
         else
         echo "$VAL"
         fi
    fi
    done < $OLDREP/$LISTE
    Pour l'instant le code n'affiche que la liste des "variables" et de leurs données sans commentaires ou espaces vides.

    L'intérêt : Migrer d'un ancien serveur avec des listes de diffusion et leurs .conf vers un nouveau serveur mis à jour. Je souhaite récupérer les listes de diffusions proprement.
    Merci d'avoir au moins jeté un œil

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Bonjour

    Euh ... rien compris.

    Tu as des fichiers de conf qui sont vieux.
    Tu as une liste de variables.
    Et tu voudrais ... quoi ?

    Donne un exemple concret de ce que tu as et de ce que tu veux. Dans des balises code, bien sûr.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire support informatique
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire support informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Voilà j'ai édité le sujet j'espère qu'il est plus compréhensible =)

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Non, c'est pareil. J'avais demandé un exemple concret que tu n'as pas donné.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Bonjour,

    Peux-tu fournir un exemple de fichier old,new,liste car je doute fortement que le script que tu as mis en exemple fasse ce que tu veux.
    On voit qu'il affiche la ligne en vérifiant que variable != valeur.

    De plus si une de tes lignes fini par un "=" , alors tu aura une erreur d'opérande:
    Pas bien:
    Bien:
    Cordialement.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire support informatique
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire support informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut ajout d'information
    Le début de mon script, j'avance pas à pas. Je remplacerai les echos quand je serai sur quoi je me dirige en fait

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    !/bin/bash
    NEWREP=/root/migration/
    MBR=liste.conf
    OLDREP=/root/migration/old
    VAL1=""
    VAR1=""
    while read LINE
    do
            if [[ $LINE != '#'* ]] && [[ $LINE != ""  ]]
            then
            VAR=${LINE%=*}
            VAL=${LINE#*=}
                    if [[ $VAR != $VAL ]]
                    then
                            echo "--------------"
                            echo "VARIABLE = $VAR"
                            echo "VALEUR = $VAL"
                                    while read OLDLINE
                                    do
                                            if [[ $OLDLINE != '#'* ]] && [[ $OLDLINE != "" ]]
                                            then
                                            OLDVAR=${OLDLINE%=*}
                                            OLDVAL=${OLDLINE#*=}
                                                    if [[ $OLDVAR != $OLDVAL ]]
                                                    then
                                                            echo "OLD VARIABLE = $OLDVAR"
                                                            echo "OLD VALEUR = $OLDVAL"
                                                    else
                                                            echo "$OLDVAL"
                                                    fi
                                            fi
                                    done < $OLDREP/$MBR
                    else
                            echo "$VAL"
                    fi
     
            fi
    done < $NEWREP/$MBR
    Voici une partie du fichier .conf en question, j'aimerai récupérer la liste des paramètres et les séparer en deux, variable = valeur. (donc variable et valeur)

    Il y a de nombreuse liste à intégrer sur le serveur donc l'idéal serait avec une liste vierge de valeurs ( variables = ), de facilité la récupération des anciennes listes en ne prenant que les valeurs pour recréer les listes sur le nouveau serveur


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    # administratives et tâches de modération, Vous devez <a
    # href="passwords">fournir un mot de passe de modération séparé et
    # fournir la liste des adresses courriels des modérateurs dans cette
    # section. Notez que le champ que vous êtes en train de modifier ici
    # contient les modérateurs de la liste.
    moderator = []
     
    # Cette description est utilisée lorsque la liste de diffusion est
    # affichée avec d'autres listes, ou dans les en-tête et autres. Elle
    # doit être aussi concise que possible tout en restant explicite.
    description = ''
     
    # Le texte sera considéré comme de l'html sauf que les retours à la
    # ligne seront convertis en <br> - vous pouvez donc utiliser des liens,
    # du texte préformatté, etc. Eviter toutefois d'utiliser les retours
    # charriots si vous ne désirez pas créer de nouveaux paragraphes.
    # Vérifier vos modifications - un mauvais code html (comme certaines
    # construction HTML inachevées) peut conduire à une impossibilité
    # d'affichage de la page info liste
    info = ''
     
    # Ce texte sera ajouté aux lignes objets des messages soumis à la liste,
    # pour faciliter la distinction des messages issus des listes de
    # diffusion dans les boîtes de reception. La concision est essentielle
    # ici, il est possible de raccourcir les noms des listes
    # particulièrement longs tant que le resultat demeure explicite. Vous
    # pouvez aussi ajouter un chiffre séquentiel par une commande de
    # substitution %d. e.g ; [nomdeliste %d] -> [nomdeliste 123] (nomdeliste
    # %05d) -> (listname 00123)
    #
    subject_prefix = '[exemple] '
     
    # Cacher l'expéditeur du message, en le remplaçant par l'adresse de la
    # liste (supprimer les champs From, Sender et Reply-To)
    #
    # Les valeurs admises sont :
    #    0 = "Non"
    #    1 = "Oui"
    anonymous_list = False
     
    # Les en-têtes Reply-To: du message original doivent être supprimés ? Si
    # oui, cela s'appliquera également aux en-têtes Reply-To: ajoutés par
    # Mailman.
    #
    # Les valeurs admises sont :
    #    0 = "Non"
    #    1 = "Oui"
    first_strip_reply_to = False
     
    # Cette option contrôle ce que Mailman fait des en-têtes Reply-To: des
    # messages qui arrivent sur cette liste. Quand il a la valeur
    # expéditeur, Mailman n'ajoute pas d'en-tête Reply-To:, et s'il y en a
    # un dans le message original, il n'est pas supprimé. Mettre cette
    # valeur à Cette liste ou a adresse explicite oblige Mailman à insérer

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Exaeko Voir le message
    Voici une partie du fichier .conf en question, j'aimerai récupérer la liste des paramètres et les séparer en deux, variable = valeur. (donc variable et valeur)

    Il y a de nombreuse liste à intégrer sur le serveur donc l'idéal serait avec une liste vierge de valeurs ( variables = ), de facilité la récupération des anciennes listes en ne prenant que les valeurs pour recréer les listes sur le nouveau serveur
    Ah! Ben comme ça, c'est beaucoup plus clair!

    Sinon j'ai vu que le champ 'info' pouvait contenir des retours chariot, ce qui ne va pas simplifier le parsing!

  8. #8
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Pardon, mais si on se permet d'insister lourdement, c'est parce que, comme beaucoup, tu réinventes, par un script compliqué, des outils qui existent déjà.

    Pour extraire les affectations de variables, on peut juste faire, en une ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ sed -n '/^#/!{/=/s/=.*/=/p}' mon_fichier.conf
    moderator =
    description =
    info =
    subject_prefix =
    anonymous_list =
    first_strip_reply_to =
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire support informatique
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire support informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Comme je disais je suis vraiment novice et chaque ligne qui fonctionne pour moi c'est un grand pas =)

    Quand je vois mon début de script je le trouve long mais clair pour moi par contre le sed que tu indiques j'ai encore du mal à cerné l'ensemble.

    Je n'ai fourni qu'une partie du fichier en question il y a beaucoup plus mais je n'arrive pas à copier coller la totalité du fichier je vais regarder comment faire ça sur Konsole.

    Merci quand même de passer du temps pour ça

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire support informatique
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire support informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Continuation
    Bonjour, une fois effectué la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/^#/!{/=/s/=.*/=/p}' mon_fichier.conf
    Merci Flodelarab

    J'obtiens bien la liste de toutes mes "variables" situées avant le égal. Cette liste me servira de modèle pour la suite.

    J'ai besoin de récupérer la liste des "valeurs" situées après le égal, et en utilisant le modèle au dessus, pouvoir générer des fichiers.conf avec "variables" = "valeurs" placés dans le bon ordre.

    Je vais continuer de le faire par un script compliqué et long de mon côté pour apprendre mais si quelqu'un a plus rapide ce serait intéressant !

  11. #11
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Voici une version awk pour les 2 cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ awk -F= '/^[^#]*=/{print $1"="}' monfichier.conf
    moderator =
    description =
    info =
    subject_prefix =
    anonymous_list =
    first_strip_reply_to =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ awk -F= '/^[^#]*=/{print "="$2}' monfichier.conf
    = []
    = ''
    = ''
    = '[exemple] '
    = False
    = False
    Maintenant, explique comment faire pour savoir quelle "variable" va avec quelle "valeur"
    Cordialement.

  12. #12
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 242
    Points : 13 457
    Points
    13 457
    Par défaut
    Soyons fous et ne faisons qu'une instruction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -F= '/^[^#]*=/{print $1"=" >"variables.txt"; print "="$2 >"valeurs.txt"}' monfichier.conf
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire support informatique
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire support informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Une fois extrait la liste de mes "variables" sur le nouveau serveur, je vais extraire la liste des "valeurs" dans les fichiers.conf de l'ancien serveur. L'idée c'est de recréer toutes mes listes de diffusion sur le nouveau serveur avec les fichiers.conf à jour.

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #!/bin/bash
    NEWREP=/root/migration/
    MBR=liste.conf
    OLDREP=/root/migration/old
    VAL1=""
    VAR1=""
    while read LINE
    do
            if [[ $LINE != '#'* ]] && [[ $LINE != ""  ]]
            then
            VAR=${LINE%=*}
            VAL=${LINE#*=}
                    if [[ $VAR != $VAL ]]
                    then
                            echo "--------------"
                            echo "VARIABLE = $VAR"
                            echo "VALEUR = $VAL"
                                    while read OLDLINE
                                    do
                                            if [[ $OLDLINE != '#'* ]] && [[ $OLDLINE != "" ]]
                                            then
                                            OLDVAR=${OLDLINE%=*}
                                            OLDVAL=${OLDLINE#*=}
                                                    if [[ $OLDVAR != $OLDVAL ]]
                                                    then
                                                            echo "OLD VARIABLE = $OLDVAR"
                                                            echo "OLD VALEUR = $OLDVAL"
                                                    else
                                                            echo "$OLDVAL"
                                                    fi
                                            fi
                                    done < $OLDREP/$MBR
                    else
                            echo "$VAL"
                    fi
     
            fi
    done < $NEWREP/$MBR
    Avec le script que j'ai crée pour l'instant j'extrais la liste des "variables" et "valeurs" du nouveau serveur et avec une seconde boucle celle de l'ancien serveur.

    J'essaie de faire en sorte que quand $VAR == $OLDVAR que $OLDVAL soit placé avec $VAR

    Je regarde pour intégrer ça dans ma boucle.

    Sinon autant avec mon script je n'ai pas de soucis quand "valeurs" a des retours chariots, mais avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ awk -F= '/^[^#]*=/{print "="$2}' monfichier.conf
    il ne les prend pas en compte.

    Voici une autre partie de mon fichier.conf avec des retours chariots :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    # host_name - Le "nom d'h&ocirc;te pleinement qualifi&eacute;" (FQDN) du
    # serveur sur lequel est install&eacute; le serveur de listes.
    #
    # web_page_url - L'URL de base pour Mailman. Elle peut &ecirc;tre
    # concat&eacute;n&eacute;e avec, par exemple listinfo/%(list_name)s pour
    # donner la page d'infos de la liste.
    #
    # description - La description courte de la liste de diffusion.
    #
    # info - La description compl&egrave;te de la liste de diffusion.
    #
    # cgiext - L'extension ajout&eacute;e aux scripts cgi.
    #
    #
    msg_footer = """_______________________________________________
    %(real_name)s mailing list
    %(real_name)s@%(host_name)s
    %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s"""
     
    # Lorsque vous nettoyez les pièces attachées, elles sont stockées dans
    # la section archive et des liens sont crées dans les messages pour en
    # permettre l'accès depuis une page web. Si vous désirez voir totalement
    # disparaître les pièces attachées, vous pouvez utiliser les options de
    # filtrage de contenu.
    #
    # Les valeurs admises sont :
    #    0 = "Non"
    #    1 = "Oui"
    scrub_nondigest = False
     
    # Les adresses de listes doivent être écrites selon le format général
    # des adresses électroniques (e.g mailman@exemple.com). Ne pas spécifier
    # l'adresse de cette liste en même temps dans la page de configuration
    # d'exclusion de liste  d'une autre liste, sinon les abonnés des deux
    # listes ne recevront plus aucun message. A noter aussi que
    # l'administrateur du site devrait interdire les listes soeurs
    regular_exclude_lists = []
     
    # Les adresses de listes doivent être écrites selon le format général
    # des adresses électroniques (e.g mailman@exemple.com). A noter aussi
    # que l'administrateur du site devrait interdire les listes soeurs
    regular_include_lists = []
     
    ## Digest options
    #
    # Caractéristiques de la livraison par lot des envois groupés.

  14. #14
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Je t'ai déjà dit dans mon premier post que ton script ne fonctionne pas comme tu le dis, pour t'en rendre compte, essaie avec le fichier suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TOTO=TOTO
    TITI=TITI
    TATA=TATA
    Et dis moi s'il te retourne quelque chose
    Cordialement.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Stagiaire support informatique
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire support informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Il m'indique :
    J'ai rajouté les "" comme tu m'as indiqué merci

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #!/bin/bash
    NEWREP=/root/migration/
    MBR=liste.conf
    OLDREP=/root/migration/old/
    VAL1=""
    VAR1=""
    while read LINE
    do
            if [[ "$LINE" != '#'* ]] && [[ "$LINE" != ""  ]]
            then
            VAR=${LINE%=*}
            VAL=${LINE#*=}
                    if [[ "$VAR" != "$VAL" ]]
                    then
                            echo "--------------"
                            echo "VARIABLE = $VAR"
                            echo "VALEUR = $VAL"
                                    while read OLDLINE
                                    do
                                            if [[ "$OLDLINE" != '#'* ]] && [[ "$OLDLINE" != "" ]]
                                            then
                                            OLDVAR=${OLDLINE%=*}
                                            OLDVAL=${OLDLINE#*=}
                                                    if [[ "$OLDVAR" != "$OLDVAL" ]]
                                                    then
                                                            echo "OLD VARIABLE = $OLDVAR"
                                                            echo "OLD VALEUR = $OLDVAL"
                                                    else
                                                            echo "$OLDVAL"
                                                    fi
                                            fi
                                    done < $OLDREP/$MBR
                    else
                            echo "$VAL"
                    fi
     
            fi
    done < $NEWREP/$MBR
    Après le fait que "variable" != "valeur" c'est le moyen que j'ai trouvé pour gérer les retours chariots quand il y en a dans "valeur"

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Voici le awk modifier pour le cas de la "valeur":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ awk -F= '/^[^# ]+/ {NF > 1 &&  $0="="$2 ;print}' monfichier.conf
    = """_______________________________________________
    %(real_name)s mailing list
    %(real_name)s@%(host_name)s
    %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s"""
    = False
    = []
    = []
    Cordialement.

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/01/2013, 11h03
  2. Réponses: 3
    Dernier message: 10/06/2011, 10h51
  3. Réponses: 3
    Dernier message: 29/04/2010, 13h54
  4. Réponses: 3
    Dernier message: 25/09/2008, 10h26
  5. Réponses: 1
    Dernier message: 04/08/2007, 18h07

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