[Script shell] Incrémenter un entier

0seb0 Messages postés 37 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,
Ca doit être couillon, mais je galère...

Voici ce que je veux faire :
- savoir combien de fois un fichier contient la chaine "Enlève ta culotte, bébé : j'arrive !" (NdlR : le lecteur avisé relèvera l'effort d'originalité...)
- et juste pour mentir ou parce que je trouve ça plus funky, rajouter "un" à ce nombre.

Pour l'instant, j'ai ça :
grep "Enlève ta culotte, bébé : j'arrive !" ./MonFichierTropCool | wc -l | cat | read NbIteChaine
NbIteChaine=$(expr $NbIteChaine + 1)


Mais...
echo $NbIteChaine
ne veut rien savoir et me renvoie
$(expr 3 + 1)
quand la chaine apparait 3 fois dans le fichier par exemple. Alors que moi, naïf et dépressif, j'attends le résultat "4".

J'ai beau essayer d'inombrables combinaisons de positions des $, Bébé me résiste aujourd'hui ! :p
Configuration: Windows 2000
Internet Explorer 6.0

9 réponses

  1. 0seb0 Messages postés 37 Statut Membre 16
     
    Enfin ! C'était un problème de syntaxe sur l'utilisation de "expr". La réponse et donc :
    grep -c "Enlève ta culotte, bébé : j'arrive !" ./MonFichierTropCool | cat | read NbIteChaine
    NbIteChaine=`expr $NbIteChaine + 1`

    Problème résolu. :-)
    4
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    pourquoi ne pas utiliser l'option -c de grep :
    -c Suppress normal output; instead print a count of matching lines
    for each input file
    0
    1. 0seb0 Messages postés 37 Statut Membre 16
       
      ...mais parce que je ne connaissais pas cette option bien sûr !

      Donc j'ai maintenant :
      grep -c "Enlève ta culotte, bébé : j'arrive !" ./MonFichierTropCool | cat | read NbIteChaine

      à la place de la première ligne, mais à vrai dire... ça ne change rien à mon souci, en fait. :o

      Merci en tous cas !
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      Pour sauver le résultat:
      NbIteChaine=$(grep -c "Enlève ta culotte, bébé : j'arrive !" ./MonFichierTropCool)
      0
      1. 0seb0 Messages postés 37 Statut Membre 16 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Hum...

        Alors là, un echo $NbIteChaine juste après me renvoie (au lieu de "3") :
        $(grep -c "Enlève ta culotte, bébé : j'arrive !" ./MonFichierTropCool)

        Ou alors j'ai raté un épisode. oO'
        0
  3. 0seb0 Messages postés 37 Statut Membre 16
     
    Ca ne serait pas une question d'espaces dans la ligne suivante ?
    NbIteChaine=$(expr $NbIteChaine + 1)
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Et est-ce qu'un :
    NbIteChaine=$(expr $(grep -c grep -c "Enlève ta culotte, bébé : j'arrive !" ./MonFichierTropCool) + 1)
    ne serait pas plus simple ?

    ;-))
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      pour Enlève la culotte, oui il faut une solution plus simple :-DDD et aussi rapide :-DDD
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        ;-))
        0
    2. 0seb0 Messages postés 37 Statut Membre 16
       
      Le coup du $(grep -c trucmuche) ne semblait pas marcher, cf. message <4>. J'avoue que je ne sais pas pourquoi. :-/

      @lami20j: tssss... :p
      0
      1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > 0seb0 Messages postés 37 Statut Membre
         
        Alors là, un echo $NbIteChaine juste après me renvoie (au lieu de "3") :
        Te renvoie quoi ? ;-\
        0
      2. 0seb0 Messages postés 37 Statut Membre 16 > 0seb0 Messages postés 37 Statut Membre
         
        ca :

        $(grep -c "Enlève ta culotte, bébé : j'arrive !" ./MonFichierTropCool)

        oO'
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Enlève le point d'exclamation de ton expression :
    $(grep -c "Enlève ta culotte, bébé : j'arrive " ./MonFichierTropCool) 
    Ça devrait passer ;-))
    0
  7. 0seb0 Messages postés 37 Statut Membre 16
     
    Toujours pas :(
    Mais j'avais raté un détail...
    Il faut enlever les guillemets de mon message <12>. Ca va peut-être vous mettre la puce à l'oreille, parce que moi, ça ne m'inspire pas plus !
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaie en le protégeant alors :
    grep -c "Enlève ta culotte, bébé : j'arrive \!"
    ;-))
    0
  9. 0seb0 Messages postés 37 Statut Membre 16
     
    Pour régler la question du "!", je l'ai viré et... ça ne change rien.
    Monde cruel...
    0
    1. _vince Messages postés 37 Statut Membre
       
      Je fais un peu de proselytisme pour awk:

      awk '
      BEGIN {sum = 1;}
      /"Enlève ta culotte, bébé : j'arrive !"/ { sum += 1; }
      END { print "nombre de lignes: " sum; }'
      MonFichierTropCool

      Pour les operations mathematiques en ksh, je trouve que les double parentheses sont + pratiques:
      toto = 5
      (( toto = toto + 1 ))
      print "toto = ${toto}"
      est plus pratique que expr mais c'est affaire de gout...
      0
  10. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    peut être ce sont les accents
    essaie
    echo $(grep -c "Enl.ve ta culotte, b.b. : j'arrive" ./MonFichierTropCool) 

    0