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

Langage Perl Discussion :

Rechercher / Remplacer


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 134
    Points : 53
    Points
    53
    Par défaut Rechercher / Remplacer
    Bonjour,

    j'ai plusieurs fichiers htm(l) et souhaite remplacer une chaine de caractères par une autre.
    Pas de problème, perl est la pour ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/chaine_a_rechercher/chaine_de_substitution/g' *htm
    Le soucis c'est que ma chaine contient des guillemets doubles et des espaces donc le script ne fonctionne pas. Comment remédier à cela ???

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par anti-conformiste
    Bonjour,

    j'ai plusieurs fichiers htm(l) et souhaite remplacer une chaine de caractères par une autre.
    Pas de problème, perl est la pour ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/chaine_a_rechercher/chaine_de_substitution/g' *htm
    Le soucis c'est que ma chaine contient des guillemets doubles et des espaces donc le script ne fonctionne pas. Comment remédier à cela ???

    Merci d'avance
    Le fait qu'il y ait des guillemets doubles et des espaces ne devrait pas être un obstacle en soi, montre nous ta chaîne réelle qu'on puisse te dire d'où vient vraiment le problème.

    --
    Jedaï

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Salut,
    Citation Envoyé par anti-conformiste
    perl -pi -e 's/chaine_a_rechercher/chaine_de_substitution/g' *htm
    Pense à sauvegarder les fichiers originaux au cas où tu n'obtiendras le résultat voulu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    perl -pi.orig -e 's/chaine_a_rechercher/chaine_de_substitution/g' *htm
    lami20j
    --
    lami20j

  4. #4
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 134
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Jedai
    Le fait qu'il y ait des guillemets doubles et des espaces ne devrait pas être un obstacle en soi, montre nous ta chaîne réelle qu'on puisse te dire d'où vient vraiment le problème.

    --
    Jedaï
    Voici ma chaîne d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/tourisme.htm" class="liens-menu"
    A remplacer par celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/pavillons.htm" class="liens-menu"
    Je précise qu'il y a plusieurs liens tourisme.htm et que seul celui avec la classe 'liens-menu' derrière est à remplacer, sinon je ne m'embeterais pas avec les guillemets et espaces.

  5. #5
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Et en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ch =~ s#"/tourisme.htm" class="liens-menu"#"/pavillons.htm" class="liens-menu"#;
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  6. #6
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 134
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par 2Eurocents
    Et en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ch =~ s#"/tourisme.htm" class="liens-menu"#"/pavillons.htm" class="liens-menu"#;
    Peux tu me préciser le code exact, je suis programmeur en C mais n'y connais rien en perl

  7. #7
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par anti-conformiste
    programmeur en C mais n'y connais rien en perl
    J'ai mis un code fonctionnel, mais j'avais un peu perdu le contexte de vue ... J'ai donné un code pour intégrer dans un script, pas pour un traitement à la ligne de commande

    Voici, remis dans le contexte, un essai à tenter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi.orig -e 's#"/tourisme.htm" class="liens-menu"#"/pavillons.htm" class="liens-menu"#g' *htm
    Il sauvegarde tes fichiers d'origine en .orig comme l'a fait remarquer lami20j.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  8. #8
    Membre du Club
    Inscrit en
    Août 2005
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 134
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par 2Eurocents
    J'ai mis un code fonctionnel, mais j'avais un peu perdu le contexte de vue ... J'ai donné un code pour intégrer dans un script, pas pour un traitement à la ligne de commande

    Voici, remis dans le contexte, un essai à tenter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi.orig -e 's#"/tourisme.htm" class="liens-menu"#"/pavillons.htm" class="liens-menu"#g' *htm
    Il sauvegarde tes fichiers d'origine en .orig comme l'a fait remarquer lami20j.
    C'est fonctionnel


    Donc lorsque ma chaîne comporte des côtes (simples ou doubles ou des espaces), je dois remplacer le symbole / par le #, c'est bien ça ?

  9. #9
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par anti-conformiste
    Donc lorsque ma chaîne comporte des côtes (simples ou doubles ou des espaces), je dois remplacer le symbole / par le #, c'est bien ça ?
    Pas exactement ... Le / des expressions rationnelles peut être remplacé par n'importe quel autre caractère, lorsque l'on veut éviter des conflits avec le même caractère dans la chaine de recherche ou de remplacement (et tu as des / dans tes chaines à problème).

    J'ai choisi le # car il est assez "neutre", mais on aurait pu mettre aussi bien un X, un µ ou un §, enfin un caractère qui ne sert à rien dans notre cas.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/06/2009, 17h49
  2. Rechercher remplacer une chaine dans 150 procs.
    Par gregco1 dans le forum Oracle
    Réponses: 8
    Dernier message: 14/06/2006, 17h39
  3. rechercher / remplacer dans fichier en hexa
    Par ratdegout dans le forum C++
    Réponses: 2
    Dernier message: 26/05/2006, 14h14
  4. Comment faire une recherche/remplacement sous Linux
    Par fabszn dans le forum Shell et commandes GNU
    Réponses: 12
    Dernier message: 07/02/2006, 16h38
  5. Rechercher -> remplacer ?
    Par Joul dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/09/2005, 02h03

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