Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/12/2007, 16h22   #1
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : mai 2007
Messages : 19
Points : 3
Points : 3
Par défaut [ksh] Boucle sur le premier élément de chaque ligne d'un fichier

Bonjour !

Voilà, j'ai un fichier contenant :

074 Paris
142 Bourges
191 Mulhouse
161 Nice

Dans mon script, je souhaiterais boucler sur les nombres de chaque ligne.
En d'autre terme, une boucle qui récupère le nombre de chaque ligne (074 par exemple), le stocke dans une variable, je fais mon traitement et la boucle passe à la deuxième ligne ect ect.

J'ai un peu de mal avec ksh si quelqu'un pouvait m'aider

Merci d'avance
psykoleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 17h01   #2
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 567
Points : 7 567
une simple boucle read, si tu n'as pas besoin du reste de la ligne
Code :
1
2
3
4
while read nb
do
 echo ${nb}
done < monfichier
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 17h43   #3
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : mai 2007
Messages : 19
Points : 3
Points : 3
ca me resort les lignes entières et sans la dernière :

074 Paris
142 Bourges
191 Mulhouse


Moi j'aimerais ça :

074
142
191
161

psykoleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 18h08   #4
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 451
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 51
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 451
Points : 7 567
Points : 7 567
J'ai répondu un peu vite . il faut au moins deux variables pour que read fasse le découpage des champs
Code :
1
2
3
4
cat monfichier | while read nb xy
do
 echo ${nb}
done
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 11h04   #5
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : mai 2007
Messages : 19
Points : 3
Points : 3
Super

Par contre, ca me retourne pas la dernière ligne. En rajoutant une ligne vide en fin de fichier le problème est résolu mais étant perfectionniste je me demandais s'il était possible de le faire proprement ?
psykoleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 11h57   #6
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
La ligne vide, c'est obligatoire pour read car en l'absence de caractère de saut de ligne sur "161 Nice", read ne sait pas qu'il faut qu'il lise. Essaie voir comme ça :
Code :
1
2
3
4
5
while read LINE
do
 echo $LINE | read nb xy
 echo ${nb}
done < monfichier
Le echo $LINE devrait rajouter ce qu'il manque.

Ce qui est assez étrange c'est que j'ai fait un test sous Solaris et la méthode d'al1_24 marche très bien, j'ai bien toutes les lignes
__________________

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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 14h31   #7
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : mai 2007
Messages : 19
Points : 3
Points : 3
J'ai compris le problème et testé ta soluce mais non ca veut pas

On tente une dernière solution et après je passerais ce post en résolu
psykoleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 15h17   #8
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Plutôt étrange. C'est un fichier créé sous Unix ou sous Windows ?
__________________

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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 15h22   #9
Rédacteur/Modérateur
 
Avatar de _Mac_
 
Inscription : août 2005
Messages : 8 306
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 8 306
Points : 8 590
Points : 8 590
Oh !!! Je viens de trouver une méga gruge (au moins, sous Solaris) : le - en paramètre de cat !!!
Code :
1
2
3
4
echo "" | cat monfichier - | while read nb xy
do
 echo ${nb}
done
__________________

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
_Mac_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 16h13   #10
Invité de passage
 
Inscription : mai 2007
Messages : 19
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : mai 2007
Messages : 19
Points : 3
Points : 3


Merci beaucoup
psykoleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h18.


 
 
 
 
Partenaires

Hébergement Web