question sur "read" entre autres - Shell/Batch - Programmation
Marsh Posté le 02-11-2002 à 20:46:38
Vanik a écrit a écrit : bonjour, je debute, donc j'ai qq petites questions voila, je voudrais faire un petit script qui compte le nombre de fois qu'un mot apparait dans un fichier. mon probleme c'est que j'arrive à compter, mais quand je sors de ma boucle, mon compteur reprend la valeur 0. ################################## ########## #compteur# ########## # usage : compteur nom-du-fichier #! /bin/sh set -x #compte=0 # disons qu'on cherche le "mot" # grep \# $1 | while read ligne do let compte=`expr $compte + 1` echo $compte done # et voila mon probleme... echo compte vaut $compte ################################## voila, je dois mal m'y prendre, y'a certainement plus simple (avec un grep?) mais je debute... merci de m'aider ah oui et aussi : je n'ai pas trop compris le fonctionnement de la commande read. si on fait "cat $1 | while read mot", que vaudra $mot ?? est ce qu'il vaudra le 1er mot, puis le 2eme, puis le 3eme.... ou bien tous les mots de la 1ere ligne, puis ceux de la 2eme, puis.... ?? merci bcp car j'ai un peu de mal. |
|
moi pour compter les textes 'toto' dans tous les fichiers du repertoire courrant je ferrai ca :
#!/bin/sh
COMPTER=`grep toto ./* | wc -l`
echo $COMPTER
tout simplement....
ou
#!/bin/sh
COMPTER=`grep $1 $2 | wc -l`
echo $COMPTER
donc paramettre 1 texte cherche
parametre 2 le/les fichiers a fouiller.
Marsh Posté le 02-11-2002 à 21:23:41
merci à toi pour ton aide. je venais justement pr dire que j'avais decouvert la commande wc
tu as mm etendu le truc pr plusieurs fichiers ds un rep... (moi c juste un seul fichier qui m'interesse)
mais il y a un probleme si le mot apparait 2 fois sur la mm ligne, il ne sera compté qu'une fois. donc je pense qu'il faudrait traiter le fichier mot à mot et nom ligne par ligne.
en fait, en plus, je voudrais faire ca pour chaque mot du fichier, donc j'aimerais eviter de recompter un mot qui est ecrit plusieurs fois. ca veut dire qqc ce que g dit là ?
merci de m'aider.
Marsh Posté le 02-11-2002 à 21:46:24
une idée : si on remplace tous les caracteres d'espace par un retour charriot et qu'ensuite on fasse un wc -l, alors on aura le nombre exact de fois que le mot apparait dans le fichier.
donc g voulu essayer avec un sed -e s/\ /\\n/ (enfin un truc du genre) mais ca n'a pas marché.
aidez-moi s'il vous plait
Marsh Posté le 03-11-2002 à 11:08:54
Vanik a écrit a écrit : une idée : si on remplace tous les caracteres d'espace par un retour charriot et qu'ensuite on fasse un wc -l, alors on aura le nombre exact de fois que le mot apparait dans le fichier. donc g voulu essayer avec un sed -e s/\ /\\n/ (enfin un truc du genre) mais ca n'a pas marché. aidez-moi s'il vous plait |
c'est ta syntaxe du sed qui doit pas aller, mais la solution c'est bien ca...
verifies ta syntaxe ca doit suffir
Marsh Posté le 02-11-2002 à 19:44:14
bonjour, je debute, donc j'ai qq petites questions
voila, je voudrais faire un petit script qui compte le nombre de fois qu'un mot apparait dans un fichier. mon probleme c'est que j'arrive à compter, mais quand je sors de ma boucle, mon compteur reprend la valeur 0.
##################################
##########
#compteur#
##########
# usage : compteur nom-du-fichier
#! /bin/sh
set -x
#compte=0
# disons qu'on cherche le "mot" #
grep \# $1 | while read ligne
do
let compte=`expr $compte + 1`
echo $compte
done
# et voila mon probleme...
echo compte vaut $compte
##################################
voila, je dois mal m'y prendre, y'a certainement plus simple (avec un grep?) mais je debute... merci de m'aider
ah oui et aussi : je n'ai pas trop compris le fonctionnement de la commande read. si on fait "cat $1 | while read mot", que vaudra $mot ?? est ce qu'il vaudra le 1er mot, puis le 2eme, puis le 3eme.... ou bien tous les mots de la 1ere ligne, puis ceux de la 2eme, puis.... ??
merci bcp car j'ai un peu de mal.