Lecture de fichier avec while do
Résolu
yoopi
-
yoopi -
yoopi -
Bonjour,
voici mon problème :
mon texte cumul.txt contient 4 lignes
ex : 2536
8456
7594
6452
mais lorsque j'effectue ma boucle (pour lire toutes les lignes de mon fichier), il m'affiche seulement une fois ok alors qu'il devrait l'afficher 4 fois
ma boucle ne me permet donc pas de lire entièrement mon fichier.
qui pourrait m'aider ?
ma boucle :
cpt=0
{
while read line
do grep "$line" > /dev/null
if [ "$line" = 0 ]
then
echo ""$line""
cpt=`expr $cpt + 1`
else
echo "ok"
fi
done < cumul.txt
}
d'avance merci
voici mon problème :
mon texte cumul.txt contient 4 lignes
ex : 2536
8456
7594
6452
mais lorsque j'effectue ma boucle (pour lire toutes les lignes de mon fichier), il m'affiche seulement une fois ok alors qu'il devrait l'afficher 4 fois
ma boucle ne me permet donc pas de lire entièrement mon fichier.
qui pourrait m'aider ?
ma boucle :
cpt=0
{
while read line
do grep "$line" > /dev/null
if [ "$line" = 0 ]
then
echo ""$line""
cpt=`expr $cpt + 1`
else
echo "ok"
fi
done < cumul.txt
}
d'avance merci
A voir également:
- Lecture de fichier avec while do
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
2 réponses
Salut,
Essaie comme ça :
Essaie comme ça :
cpt=0 { while read line do grep "$line" > /dev/null if [ "$line" = 0 ] then echo ""$line"" else echo "ok" fi cpt=`expr $cpt + 1` done < cumul.txt };-))
[tmpfs]$ cat fich 2536 8456 7594 8503 6452 2036 [tmpfs]$ cat foo.sh #! /bin/sh #set -xv cpt=0 while read line do grep "0" <<<"$line" > /dev/null if [ "$?" = 0 ] then echo ""$line"" cpt=`expr $cpt + 1` else echo "ok" fi done < fich echo "compteur=$cpt" [tmpfs]$ ./foo.sh ok ok ok 8503 ok 2036 compteur=2 [tmpfs]$;-))
déplacer le compteur n'a rien changé,
maintenant mon fichier fait 3 lignes (il change tout le temps) mais j'ai seulement un affichage qui se produit !
voici le résultat lorsque j'exécute mon programme :
ok
THE FLUX IS OK
alors que ce devrait être :
ok
ok
ok
THE FLUX IS OK
Et puis aussi, tu veux faire quoi exactement avec cette boucle ???
do grep "$line" > /dev/null
if [ "$line" = 0 ]
C'est sensé faire quoi ?
en fait cette boucle fait partie d'un long programme et le compteur est utilisé plus tard et il est très important !
ce que je veux faire c'est contrôler que les nombres sur chaque ligne de mon fichier soient différents de 0, si un nombre est égal à 0 alors il faut le signaler avec un echo qqch sinon ici je suis en mode test donc, je vérifie que ma boucle li bien toutes les lignes de mon fichier et pour ce faire je l'affiche avec un echo.
donc :
je crée une boucle pour lire un fichier,
je li chaque ligne (ce sont des numeric) de mon fichier,
si il y a un élément qui est = à 0,
alors je le signale et j'incrémente un compteur,
sinon j'affiche l'élément que je viens de lire (si il est différent de 0),
j'aimerai donc avoir un résultat avec autant de ligne qu'il n'y a dans mon fichier.
merci pour ta collaboration jipicy