[Script shell] Incrémenter un entier

Fermé
0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 - 21 août 2007 à 15:19
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 23 août 2007 à 10:55
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
A voir également:

9 réponses

0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 16
22 août 2007 à 12:06
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
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
21 août 2007 à 15:32
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
0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 16
21 août 2007 à 15:40
...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
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
21 août 2007 à 16:00
Pour sauver le résultat:
NbIteChaine=$(grep -c "Enlève ta culotte, bébé : j'arrive !" ./MonFichierTropCool)
0
0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 16 > dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024
21 août 2007 à 16:15
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
0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 16
22 août 2007 à 11:54
Ca ne serait pas une question d'espaces dans la ligne suivante ?
NbIteChaine=$(expr $NbIteChaine + 1)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
22 août 2007 à 12:33
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
22 août 2007 à 13:42
Salut,

pour Enlève la culotte, oui il faut une solution plus simple :-DDD et aussi rapide :-DDD
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
22 août 2007 à 13:44
;-))
0
0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 16
23 août 2007 à 09:10
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897 > 0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008
23 août 2007 à 09:13
Alors là, un echo $NbIteChaine juste après me renvoie (au lieu de "3") :
Te renvoie quoi ? ;-\
0
0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 16 > 0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008
23 août 2007 à 09:18
ca :

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

oO'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
23 août 2007 à 09:26
Enlève le point d'exclamation de ton expression :
$(grep -c "Enlève ta culotte, bébé : j'arrive " ./MonFichierTropCool) 
Ça devrait passer ;-))
0
0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 16
23 août 2007 à 09:42
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
23 août 2007 à 09:49
Essaie en le protégeant alors :
grep -c "Enlève ta culotte, bébé : j'arrive \!"
;-))
0
0seb0 Messages postés 37 Date d'inscription jeudi 16 août 2007 Statut Membre Dernière intervention 6 mars 2008 16
23 août 2007 à 10:06
Pour régler la question du "!", je l'ai viré et... ça ne change rien.
Monde cruel...
0
_vince Messages postés 37 Date d'inscription mardi 30 janvier 2007 Statut Membre Dernière intervention 14 mai 2008
23 août 2007 à 10:51
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
23 août 2007 à 10:55
Salut,

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

0