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 :

recherche d'une chaine dans une chaine


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Points : 63
    Points
    63
    Par défaut recherche d'une chaine dans une chaine
    Bonjour,
    Je voudrais dans un script tester la présence d'une chaine de caractères dans une autre.
    Je ne trouve rien dans un ce sens. Voici ce que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    cpt=0
    cat "$arg1/$arg2"|while read line
     do
      if [ $(grep "$arg3" "$line" -i) ]
       then $cpt=$cpt+1
       echo $line
      fi
    done
    echo "le nbre de lignes est $cpt"
    Cela devrait tester si $arg3 est dans $line et si oui on incrémente un compteur.
    Or cela ne fonctionne pas car grep cherche dans un fichier et non dans une chaine.
    Si quelqu'un a la fonction miracle...

    JPC

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    faut faire un echo "..." | grep :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ $(echo "$line" | grep "$arg3" -i) ]
    Pour info, y a un flag -q sur grep qui n'affiche rien mais renvoie un statut à 0 ou 1 selon que le grep à trouver qqch ou non. C'est assez pratique justement dans les if.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    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
    Points : 5 915
    Points
    5 915
    Par défaut
    En une ligne avec awk


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     awk  'BEGIN{ CPT=0 } /CRITERE1/{ if ( $0 ~ /CRITERERE2/ )  CPT=CPT+1  } END{ print CPT }' FICHIER

  4. #4
    Membre du Club
    Inscrit en
    Juin 2006
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 171
    Points : 63
    Points
    63
    Par défaut Merci à tous les deux
    Il faut que je bûche awk...

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 14h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 20h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2007, 00h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 11h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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