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 :

Modifier une ligne à condition que la ligne au dessus soit :


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Points : 69
    Points
    69
    Par défaut Modifier une ligne à condition que la ligne au dessus soit :
    Bonjour tous,

    Je suis en cours de création d'un script de configuration pour introduire les paramètres de configuration de mon serveur de messagerie.

    Le nom du fichier est : axis2.xml

    Dans ce fichier, voici ce que j'ai par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <!-- Uncomment and configure the SMTP server information
        check com.sun.mail.smtp package documentation for descriptions of properties
        <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
            <parameter name="mail.smtp.host">smtp.gmail.com</parameter>
            <parameter name="mail.smtp.port">587</parameter>
            <parameter name="mail.smtp.starttls.enable">true</parameter>
            <parameter name="mail.smtp.auth">true</parameter>
            <parameter name="mail.smtp.user">synapse.demo.0</parameter>
            <parameter name="mail.smtp.password">mailpassword</parameter>
            <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter>
        </transportSender>-->

    Je veux dé-commenter </transportSender>--> afin d'avoir au final :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <!-- Uncomment and configure the SMTP server information
        check com.sun.mail.smtp package documentation for descriptions of properties -->
        <transportSender name="mailto" class="org.apache.axis2.transport.mail.MailTransportSender">
            <parameter name="mail.smtp.host">smtp.gmail.com</parameter>
            <parameter name="mail.smtp.port">587</parameter>
            <parameter name="mail.smtp.starttls.enable">true</parameter>
            <parameter name="mail.smtp.auth">true</parameter>
            <parameter name="mail.smtp.user">synapse.demo.0</parameter>
            <parameter name="mail.smtp.password">mailpassword</parameter>
            <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter>
        </transportSender>
    Mon souci, c'est que j'ai </transportSender>--> plusieurs fois dans ce fichier.

    L'idée serait donc de vérifier : Si la ligne au dessus est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter>
    Alors je remplace :
    Par :
    Merci pour votre coup de pousse

  2. #2
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '\#mail.smtp.from">synapse.demo.0@gmail.com#{n;s#-->##}' axis2.xml
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Membre du Club Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Points : 69
    Points
    69
    Par défaut
    Merci pour ta réponse, mais ça fonctionne pas : j'ai dans ma console, l'affichage du fichier. Si j'ouvre celui-ci avec mon éditeur, je trouve toujours la ligne commenté :
    Sinon, j'utilise pour certaines commandes perl car au lieu de mettre le chemin du fichier à modifier, je mets uniquement le nom
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(find . -name 'axis2.xml')
    Pensez-vous que je peux l'utiliser avec sed ? ou cela s'écrit d'une autre manière ?

    Je joins le fichier pour effectuer les tests.

    axis2.xml

    Merci pour votre aide

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    La solution donnée fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            <parameter name="mail.smtp.from">synapse.demo.0@gmail.com</parameter>
        </transportSender>
    pour modifier en directe ton fichier avec sed, utilise le paramètre -i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '\#mail.smtp.from">synapse.demo.0@gmail.com#{n;s#-->##}' axis2.xml
    Mais pour le coup ça doit pas régler ton problème, car il reste commenté si tu supprimes pas le <!-- précédent...


    Je suis pas sûr d'avoir compris ta demande vis à vis de find, mais si tu veux utiliser sed directement avec find :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name 'axis2.xml' -exec sed... {} \;
    {} correspond au nom du fichier trouvé par find (et automatiquement remplacé par sa valeur)
    Sous Kubuntu 20.04

  5. #5
    Membre du Club Avatar de Tofdu31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Octobre 2016
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2016
    Messages : 93
    Points : 69
    Points
    69
    Par défaut
    Super ça marche pour la modification avec la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '\#mail.smtp.from">synapse.demo.0@gmail.com#{n;s#-->##}' axis2.xml
    Et voici la commande avec le nom du fichier sans indiquer le chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '\#mail.smtp.from">synapse.demo.0@gmail.com#{n;s#-->##}' $(find . -name 'axis2.xml')
    Merci tous sincèrement pour votre aide
    Christophe

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    J'aurais tendance à dire qu'il faut plutot faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name 'axis2.xml' -exec sed -i '\#mail.smtp.from">synapse.demo.0@gmail.com#{n;s#-->##}' {} \;
    car si ton find ne renvoie rien, sed va resté bloqué.
    et s'il en trouve plusieurs ça sera pas bon non plus
    et s'il y a un espace dans l'adresse du fichier ça va planter.
    Sous Kubuntu 20.04

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] modifier une valeur dans la meme ligne
    Par wassil56 dans le forum Général Python
    Réponses: 6
    Dernier message: 13/05/2015, 20h25
  2. Structurer une page pour que le contenu au dessus se charge en priorité
    Par la-ilaha-ila-allah dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 12/12/2013, 13h48
  3. Réponses: 2
    Dernier message: 11/06/2010, 15h51
  4. Réponses: 1
    Dernier message: 31/10/2008, 09h50
  5. Réponses: 5
    Dernier message: 30/09/2008, 15h54

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