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 :

[AWK]expression régulière variable


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 22
    Points
    22
    Par défaut [AWK]expression régulière variable
    Bonjour,

    je souhaite faire un script me permettant de comparer les noms des fichiers contenus dans deux répertoires ($rep1 et $rep2 dans le code).
    Les fichiers que je souhaite comparer sont soumis à expression régulière (dans l'exemple, il s'agit de /(c|cpp)$/).
    Je souhaite cependant pouvoir comparer de nombreuses paires de répertoires, chacune soumise à expression régulière différente (un autre répertoire pourrait n'être soumis qu'à /h$/ par exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ls $rep1 | awk '$0 ~ /(c|cpp)$/ {print $0}' | while read fic
            do
              [[ ! -f $rep2/$fic ]] && echo $fic >> $fichier_resultat
            done
    Mon soucis, c'est que je n'arrive pas à intégrer une expression régulière variable dans mon awk : pour pouvoir comparer 12 paires de répertoires (et donc, requérant 12 expressions régulières différentes), je suis obligé de dupliquer le bout de code que je vous ai donné 12 fois... En ne changeant que l'expression régulière à chaque fois ! C'est frustrant.

    Si quelqu'un sait comment gérer les expressions régulières variables dans un awk, je lui suis d'avance reconnaissant de me faire profiter de ses connaissances.

    Gari.

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 22
    Points
    22
    Par défaut
    C'est génial d'exposer son problème sur le forum... Ca fait bien réfléchir, ça oblige à bien expliquer le problème...

    Et ça permet de trouver la réponse tout seul en 5 minutes, alors que ça fait 2 jours que je galère sur le problème

    Je donne la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    regex="(c|cpp)$"
    ls $rep1 | awk '$0 ~ /'"$regex"'/ {print $0}' | while read fic
            do
              [[ ! -f $rep2/$fic ]] && echo $fic >> $fichier_resultat
            done
    Merci à tous pour votre aide précieuse

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/11/2009, 10h03
  2. Utilisation de variables dans une Expression régulière
    Par Bonjovi51 dans le forum Langage
    Réponses: 4
    Dernier message: 13/03/2008, 11h19
  3. Expression régulière et variable
    Par Little_flower dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/03/2008, 17h03
  4. Expression régulière et variable
    Par vichenze dans le forum Langage
    Réponses: 3
    Dernier message: 24/10/2007, 13h23
  5. Expressions régulières avec variable
    Par killprog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/04/2006, 17h03

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