Précédent   Forum des professionnels en informatique > Systèmes > Linux > Contribuez
Contribuez Vos contributions pour la rubrique Linux : articles, cours, tutoriels, faq, comparatifs, tests, sources, ...
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 10/01/2011, 17h17   #1
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 068
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 068
Points : 4 140
Points : 4 140
Par défaut [SHELL] Comment lire/parcourir un fichier ?

Si vous ne vouliez lire que la première ligne d'un fichier :
Code :
1
2
read premiR_Ligne < fichier
echo "$premiR_Ligne"
le contenu de 'fichier' est redirigé vers la commande `read', qui va placer ce qu'elle a lu dans une variable "$premiR_Ligne"

Pour lire tout le contenu du fichier, on utilisera une boucle `while' :
Code :
1
2
3
while read Ligne
do echo "$Ligne"
done < fichier
Il est possible de découper la ligne en autant de variables que nécessaire :
Code :
1
2
3
4
while read champ1 champ2 toutLeReste
do line="$champ1 $champ2 $toutLeReste"
   echo "$line"
done < fichier
Si vous avez besoin de découper la ligne en fonction du formatage d'un fichier (CSV, par exemple),
vous modifierez l'environnement de la commande `read' en adaptant l'IFS (Internal Field Separator):
Code :
1
2
3
4
while IFS=';' read champ1 champ2 toutLeReste
do line="$champ1 $champ2 $toutLeReste"
   echo "$line"
done < fichier.csv
vous pourriez utiliser un tableau :
Code :
1
2
3
while IFS=';' read -a Array
do echo "${Arrray[@]}"
done < fichier.csv
ou les paramètres positionnels :
Code :
1
2
3
4
5
cat fichier.csv | while read Ligne
do IFS=';'
   set -- $Ligne
   echo "$@"
done
l'IFS, et les paramètres positionnels du script sont conservés intacts, car le pipe crée un sous-shell en dehors duquel les variables créées (ou modifiées) n'existent pas.
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 30
Vieux 28/02/2011, 21h51   #2
Membre chevronné
 
Avatar de hornetbzz
 
Homme
Directeur commercial
Inscription : octobre 2009
Messages : 474
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 44
Localisation : France

Informations professionnelles :
Activité : Directeur commercial

Informations forums :
Inscription : octobre 2009
Messages : 474
Points : 681
Points : 681
Envoyer un message via Skype™ à hornetbzz
une petite tipo: Arrray => Array
hornetbzz est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 12/02/2012, 10h35   #3
Invité de passage
 
Inscription : mars 2009
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 2
Points : 2
Points : 2
Awesome !!!
Code :
1
2
3
4
while IFS=';' read champ1 champ2 toutLeReste
do line="$champ1 $champ2 $toutLeReste"
   echo "$line"
done < fichier.csv
C'est exactement ce dont j'avais besoin pour parser mon fstab
Dröne est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h06.


 
 
 
 
Partenaires

Hébergement Web