Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 10/01/2011, 17h17   #1
N_BaH
Modérateur
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 747
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 747
Points : 6 618
Points : 6 618
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 50
Vieux 28/02/2011, 21h51   #2
hornetbzz
Membre chevronné
 
Avatar de hornetbzz
 
Homme
Directeur commercial
Inscription : octobre 2009
Messages : 481
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 45
Localisation : France

Informations professionnelles :
Activité : Directeur commercial

Informations forums :
Inscription : octobre 2009
Messages : 481
Points : 719
Points : 719
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
Dröne
Invité de passage
 
Inscription : mars 2009
Messages : 2
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 2
Points : 4
Points : 4
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 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h20.


 
 
 
 
Partenaires

Hébergement Web