logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


Lire un fichier ligne par ligne

Script Shell (bash, zsh, ksh, dash,…), pour lire un fichier texte, ligne par ligne :

#initialisation du compteur
i=0
 
while IFS= read -r ligne; do
 
  #traitement des lignes 1 et 2
  if [ "$i" -eq 1 ]; then
    echo "Nom:  $ligne"
  elif [ "$i" -eq 2 ]; then
    echo "Prénom: $ligne"
  fi
 
  # incrementation du compteur
  i=$(($i+1))
 
done < "$fichier"
 
exit 0

Explication

Cette méthode est simple, efficace et correcte.

Il est nécessaire d'utiliser l'option -r de read, sinon les backslashes (\) seront interprétés, or nous voulons conserver le contenu du fichier intact.

De plus, on utilise IFS= read.

IFS est une variable spéciale de votre shell.
Avec lui, quand votre ligne contient des caractères blancs1), read les supprime au début et à la fin, avant de placer le résultat dans ligne.

Exemple

Si le fichier test.txt indiqué dans l'exemple contient :

Dark
TUX

Lors de l'exécution du script, on aura à l'écran :

Nom : Dark
Prénom: TUX

Bien entendu, vous devez modifier le code selon vos besoins.

1)
espaces, tabulations
doc/programmation/bash/read/parcourir-fichier-texte.1282120518.txt.gz · Dernière modification: 12/09/2010 16:49 (modification externe)

Pied de page des forums

Propulsé par FluxBB