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 :

Remplacer du texte entre double quotes


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut Remplacer du texte entre double quotes
    Bonjour,

    Je dois remplacer du texte placé entre deux double quotes, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?xml version="1.0" encoding="UTF-8"?>
    <Context>
    <Manager pathname="" />
    <Resource auth="Container" driverClassName="org.postgresql.Driver"   maxActive="20" maxIdle="5" maxWait="10000" name="jdbc/custom" password="CHANGEIT" type="javax.sql.DataSource" url="jdbc:postgresql://10.10.10.10:5432/database" username="MyUser"/>
    </Context>
    La commande fonctionne avec tous les champs (driverClassName, maxActive, password.....) mais pas le username (surement à cause du />).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    # It's OK
    sed 's/\(.*password=\)[^ ]*\( .*\)/\1"NEW_VALUE"\2/' ROOT.xml
     
    # It's NOK
    sed 's/\(.*username=\)[^ ]*\( .*\)/\1"NEW_VALUE"\2/' ROOT.xml
    Est-ce que qqn peut m'aider ? Je suis perdu...

    D'avance merci,

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    Bonjour,

    qu'est-ce qui t'empêche d'adapter la commande sed à ce cas "particulier" ?

    pour ce qui est du slash, il y a deux solutions pour le protéger :
    • mettre un anti-slash devant, ou
    • changer le séparateur de commande (/) par un caractère qui ne figurera pas dans les expressions.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut
    Ce qui m'en empêche ? Ma compétence ? mdrr Je n'arrive pas à le faire... Après, idéalement j'aurais voulu conserver la même commande! (si faisable).

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    idéalement j'aurais voulu conserver la même commande! (si faisable).
    telle quelle, parce que tu veux modifier le password ou le username, tu ne peux pas garder la même commande ! :p

    en l'adaptant, c'est possible :sed 's/\(.*tonMot=\)[^ \/]*"\(.*\)/\1"NEW_VALUE"\2/'
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 129
    Par défaut
    Tu mérites un <3
    Merci à toi.. je m'étais mal exprimé, quand je disais la même commande, c'était la même syntaxe SED pour toutes mes modifs....et c'est ce que tu m'as communiqué

    Big thanks,

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 153
    Par défaut
    L'expression régulière "[^"]*" matche ce qui ce trouve entre guillemets : un guillemet, caractères quelconques sauf guillemet, un guillemet. En plus, il n'est pas obligatoire de matcher la ligne entière. Alors, on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/\(password=\)"[^"]*"/\1"NEWVALUE"/' < fichier1 > fichier2

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

Discussions similaires

  1. regex remplacer toutes les virgules entre double quote
    Par GregHory dans le forum Langage
    Réponses: 13
    Dernier message: 04/09/2015, 16h19
  2. Remplacer du texte entre 2 repères
    Par oni13 dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2011, 09h39
  3. lua remplacement de texte entre []
    Par eomer212 dans le forum Bibliothèques
    Réponses: 0
    Dernier message: 04/04/2010, 20h10
  4. [RegEx] Fonction de remplacement de texte entre 2 balises
    Par poitierjohan dans le forum Langage
    Réponses: 1
    Dernier message: 18/03/2009, 12h49
  5. Chaînes entre double quotes
    Par ybruant dans le forum Langage
    Réponses: 6
    Dernier message: 25/03/2008, 14h46

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