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

Linux Discussion :

Remplacer une expression


Sujet :

Linux

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    638
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 638
    Points : 408
    Points
    408
    Par défaut Remplacer une expression
    Bonjour,

    Dans une série de scripts PHP, j'aimerais remplacer des expressions de la forme
    par
    Comment le faire en utilisant sed ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    quelquechose du genre

    sed -e 's/$response['var']/$var/g' fichier.php (sed -e 's/avant/après/g' file)

    je n ai rien sous la main pour tester (nottament s'il y a des caractères a protéger dans la ligne)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Vous pouvez utiliser un script de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for PHP in *.php
    do
       sed "s/\$response\['\([a-zA-Z0-9_]*\)'\]/\$\1/g" < $PHP > $PHP.new
       mv $PHP.new $PHP
    done
    A noter les 3 utilisations du backslash dans la commande sed :
    • devant le $ : pour neutraliser le $ au niveau du shell
    • devant le [ : pour neutraliser le [ au niveau sed
    • devant ( et ) : pour indiquer un groupe de capture

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    avec l'option -i, sed effectue les modifications in-situ.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/$response\[.\(var\).]/$\1/' abricot.php kiwi.php pomme.php
    ira modifier $response['var'] en $var dans chacun des fichiers
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    638
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 638
    Points : 408
    Points
    408
    Par défaut
    Merci. Ca me fait gagner un temps fou dans mes développements...

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

Discussions similaires

  1. [str_replace]: Remplacer une expression par une fonction.
    Par robinowned dans le forum Langage
    Réponses: 5
    Dernier message: 26/03/2013, 20h50
  2. [Mathematica] Remplacer une expression
    Par Aur_neige dans le forum Mathematica
    Réponses: 0
    Dernier message: 27/04/2012, 16h08
  3. faire une expression réguliere dans rechercher remplacer
    Par fred0655 dans le forum Dreamweaver
    Réponses: 15
    Dernier message: 10/07/2011, 18h49
  4. Réponses: 2
    Dernier message: 25/05/2009, 09h26
  5. [RegEx] Remplacer une expression avec un nombre ou nom
    Par gandolfi dans le forum Langage
    Réponses: 4
    Dernier message: 16/11/2008, 21h48

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