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 :

Remplacement "find and replace" en utilisant une variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web PHP5/Symfony
    Inscrit en
    Janvier 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web PHP5/Symfony
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2011
    Messages : 12
    Par défaut Remplacement "find and replace" en utilisant une variable
    Bonjour,

    Je parcours plusieurs fichiers, de manière récursive via un find.

    Sur chaque fichier, j'aimerais faire un "find and replace" à l'aide de `perl`. Je vous passe les traitements, voici l'idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    FILES=`find /my/path -name "*.scss" -o -name "*.css" -type f`
     
    for FILE in $FILES
    do
        # Quelques traitements pour obtenir $CSSFILENAME
     
        perl -p -i -e 's/url\("\.\.\//url\(\"'"$CSSFILENAME"'\//g' $FILE
        # Quelques autres manipulations
    Mon problème est que mon `perl -p -i -e` ne remplace pas par la variable en question, semble l'ignorer comme si elle était vide ou me crée des erreurs (c'est le cas dans mon exemple).

    Une idée ?

    Merci par avance.

    Cédric.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 349
    Par défaut
    Bonjour,

    Pas super propre le code, dans différents posts, on dit sans arret de ne pas utiliser la boucle for pour passage d'une liste de fichier car cela ne fonctionne pas avec des noms de fichier avec espace...

    Pourquoi passer par perl pour une simple expression régulière ? sed est suffisant pour cela, de plus le sed gnu possède aussi l'option "-i".

    Sinon, ton erreur est sur le premier guillemet qui n'est pas quoté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -p -i -e 's/url\("\.\.\//url\(\"'"$CSSFILENAME"'\//g' $FILE
    ou le deuxième qui est quoté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -p -i -e 's/url\("\.\.\//url\(\"'"$CSSFILENAME"'\//g' $FILE

Discussions similaires

  1. Faire un Find and Replace dans un DataGridView
    Par Contrec dans le forum C#
    Réponses: 5
    Dernier message: 29/08/2007, 09h40
  2. Find and replace sur plusieur fichiers
    Par dazhoid dans le forum MATLAB
    Réponses: 1
    Dernier message: 30/08/2006, 16h18
  3. find and replace dans word
    Par Thargor dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 21/06/2006, 15h01

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