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 :

Détection d'un motif - Regexp


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut Détection d'un motif - Regexp
    Bonjour

    Et oui, je dois faire de la regexp en script shell et non en Perl .
    Voici mon problème. Avec la commande stat, je veux voir si un fichier est vide ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    param=`stat -c"%F" keepme/keepme.lst`
    if [ `expr $param : 'vide'` > 0 ]
    Si j'affiche la valeur de $param avec un echo, pas de problème, il m'indique bien fichier régulier vide.
    Mais c'est sur la condition que je bute. Normalement, avec expr, je veux voir si je détecte le mot vide. Or apparemment, j'écris mal mon appel vers expr.
    Où me suis-je trompé ?
    Merci d'avance de vos réponses.

    @++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    man test
    ???
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  3. #3
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Est ce que tu pourrais indiquer le résultat de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    stat -c"%F" keepme/keepme.lst
    histoire de voir un peu ...
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut Re: [Regexp] Détection d'un motif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    param=`stat -c"%F" keepme/keepme.lst`
    if [ `expr $param : '.*vide'` > 0 ]
    Ca devrait être mieux ...

    A la lecture de "info coreutils expr", dans la rubrique des opérateurs sur les chaines, on voit que expr ajoute implicitement un "^" à l'expression rationnelle fournie. Il faut donc consommer les caractères entre le début (le ^) et le motif souhaité.

  5. #5
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut
    Bonjour

    Pour vous les amis, voici mon code en entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #/bin/bash
     
    param=`stat -c"%F" keepme/keepme.lst`
    echo $param
    if [ `expr $param : '.*vide'` > 0 ]
    then
    	echo "ok, c cool"
    fi
    Et la sortie de ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fichier régulier vide
    expr: erreur de syntaxe
    Comme vous le voyez, l'echo répond bien mais l'écriture d'expr n'est pas encore bonne

    @++ et merci de votre aide.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    C'est normal ...

    $param contenant plusieurs mots séparés par des blancs, il faut le quoter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ `expr "$param" : ".*vide"`> 0 ]
    sera beaucoup plus fonctionnel 8)

  7. #7
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Head of Service Delivery
    Inscrit en
    Janvier 2003
    Messages
    2 889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Head of Service Delivery
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 889
    Par défaut
    Ok, comme la sortie de mon programme :
    ok, c cool
    Merci à toi mon fillot et à toi aussi ggnore.

    @++

    GLDavid, qui se remet doucement au shell scripts.
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  8. #8
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Hihi j'ai rien fait du tout
    Bonne continuation piti pika
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Encore plus rapide avec bash:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ "${variable/regex/}" != "$variable" ] ; # then match...
    Et aux dernières nouvelles, les entiers doivent être comparés avec -gt (-> man test). Si l'autre version est supportée, elle risque de ne guère être portable.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Je ne comprend pas vraiment tu utilises un stat %F pour détecter si un fichier est vide.

    Pourquoi ne pas tout simple utiliser %s et avoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if [ $( stat -c"%s" keepme/keepme.lst  ) -eq 0 ] 
    then 
    echo le fichier est vide 
    fi
    tu peux faire également
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    param=`stat -c"%s" keepme/keepme.lst`
    if [ $param -eq 0 ] 
     then echo le fichier est vide 
    fi

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/01/2013, 21h13
  2. VBS et REGEXP - motif prospectif négatif
    Par orducom1 dans le forum VBScript
    Réponses: 1
    Dernier message: 11/05/2010, 15h00
  3. Réponses: 2
    Dernier message: 13/05/2009, 10h11
  4. [RegEx] Regexp, motif erroné
    Par Pabavard dans le forum Langage
    Réponses: 3
    Dernier message: 27/11/2007, 16h02
  5. [AJAX] PB avec motif récupéré et new RegExp() !
    Par kakou dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 22/08/2006, 10h36

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