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 :

Perl: rechercher et remplacer avec une variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé 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 : 53
    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
    Par défaut Perl: rechercher et remplacer avec une variable
    Bonjour tous,

    Je suis à la recherche d'une aide pour une commande perl.

    Pour information ma variable ${iot_hostname} contient mon adresse IP.

    Je possède cette ligne de commande qui fonctionne sans souci pour remplacer mes localhost dans le fichier carbon.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e "s/localhost/${iot_hostname}/g" $(find . -name 'carbon.xml')
    Dans ce même fichier, j'ai une ligne qui est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!--HostName>www.wso2.org</HostName-->
    Je cherche du coup comment pouvoir effectuer la recherche et remplacement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!--HostName>www.wso2.org</HostName-->
    par la même chaine en remplacant www.wso2.org par mon adresse IP qui est inclu par variable ${iot_hostname} et en dé commentant le tout.

    L'utilisation de la variable dans la solution est à conserver pour des raisons techniques.

    Résultat final :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <HostName>192.168.1.100</HostName>
    Merci pour votre aide et je reste à disposition pour toutes informations complémentaires.

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

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

    perl ? pour si peu ?
    et ce n'est pas comme ça qu'on utilise find.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name carbon.xml --exec sed -i '/HostName/s/<!--\([^>]*>\).*\(<.*\)-->/<\1'"$ip"'\2>/' {} \;
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé 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 : 53
    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
    Par défaut
    Wouah la rapidité

    Un grand merci à toi.
    Je viens de tester en enlevant la variable par une adresse IP fixe car ça marche pas. Dans les 2 cas, j'ai une erreur :

    find: unknown predicate `--exec'

    Voici ce que j'ai mis :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name carbon.xml --exec sed -i '/HostName/s/<!--\([^>]*>\).*\(<.*\)-->/<\1'"192.168.1.10"'\2>/' {} \;

  4. #4
    Membre confirmé 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 : 53
    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
    Par défaut
    C'est bon j'ai trouvé le souci, y avait 2 tirés avant exec

    Voici du coup la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name carbon.xml -exec sed -i '/HostName/s/<!--\([^>]*>\).*\(<.*\)-->/<\1'"${iot_hostname}"'\2>/' {} \;
    ça peut servir à d'autres

    Un grand merci à toi N_BaH pour ton aide et ta réactivité.

    @ plus tard

    Christophe

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut


    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/04/2017, 13h10
  2. [PERL] problème avec une variable de session PHP
    Par ingeston dans le forum Modules
    Réponses: 1
    Dernier message: 18/04/2012, 16h32
  3. [MySQL] recherche sur la bdd avec une variable type tableau
    Par akara dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/03/2009, 11h11
  4. Comment remplacer le "where" avec une variable ?
    Par ghani25 dans le forum Forms
    Réponses: 9
    Dernier message: 28/02/2007, 09h46
  5. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21

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