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 04/03/2007, 13h59   #1
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 111
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 111
Points : 32
Points : 32
Envoyer un message via MSN à Tips
Par défaut Lire fichier ligne par ligne

Bonjour à tous !

Je désirerais faire un script permettant de lire des informations dans un fichier, ligne par ligne. J'ai essayé avec un cat, et je récupère chaque ligne dans une variable, mais le problème est que, les lignes dans le fichier contenant des espaces, la variable ne contient que le 1er mot au lieu de la ligne en entier.

Quelqu'un aurait-il une solution à ce problème ?
(Note : la variable IFS n'existe pas dans ce type de shell on dirait)

Merci d'avance
Tips est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2007, 19h51   #2
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 111
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 111
Points : 32
Points : 32
Envoyer un message via MSN à Tips
Voici un petit exemple pour illustrer les choses :

Considérons un fichier contenant la ligne suivante :

Je désirerais pouvoir le lire de façon à obtenir "aaa bbbb ccc" en 1 seule fois (le lire ligne par ligne donc).

Or ce que j'obtiens est : "aaa" car il considère les espaces comme caractères de séparation.

Une idée pour solutionner ceci ?
Tips est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2007, 21h15   #3
DIE
Membre à l'essai
 
Inscription : août 2005
Messages : 82
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 82
Points : 24
Points : 24
Code :
1
2
3
4
while read i
do
echo $i
done<fichier
DIE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2007, 21h43   #4
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 111
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 111
Points : 32
Points : 32
Envoyer un message via MSN à Tips
J'ai trouvé ce genre d'exemple en cherchant sur le net, mais cette syntaxe ne marche pas en C-Shell, même après adaptations... De plus, le concept très intéressant qu'était la variable d'environnement IFS (internal field separator) n'est pas présente non plus.

Une vraie poisse...
Tips est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2007, 22h47   #5
DIE
Membre à l'essai
 
Inscription : août 2005
Messages : 82
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 82
Points : 24
Points : 24
je connais pas du tout le cshell et j'ai pas envie de le connaitre maintenant
en attendant j'ai trouvé ça

Code :
1
2
3
4
5
To change IFS, use this command:
 
IFS='/';export IFS      # Bourne Shell
setenv IFS '/'          # C Shell
export IFS='/'          # Korn Shell
DIE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 08h30   #6
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 111
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 111
Points : 32
Points : 32
Envoyer un message via MSN à Tips
Merci pour l'info !

Je vais essayer ça en rentrant du boulot
Tips est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 13h57   #7
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 450
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 450
Points : 7 559
Points : 7 559
En Korn SHELL, read utilise une variable standard REPLY pour y charger l'intégralité de la ligne lue. Peut être y a-t-il un équivalent en csh ?
Code :
1
2
3
4
5
 
while read
do
  echo ${REPLY}
done < fichier
__________________
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/03/2007, 14h50   #8
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
le C shell sa fait tres loin, mais de memoire un truc comme :
Code :
1
2
3
4
 
foreach i ( "`cat fichier`" )
echo $i
end
devrait afficher quelque choses de correcte !
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2007, 21h07   #9
Nouveau Membre du Club
 
Inscription : octobre 2005
Messages : 111
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 111
Points : 32
Points : 32
Envoyer un message via MSN à Tips
Ca marche !

Merci beaucoup pour vos réponses

A bientôt,

Tips
Tips 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 19h05.


 
 
 
 
Partenaires

Hébergement Web