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 !


read file

Lire un fichier ligne par ligne

Script

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

#variable du fichier
fichier="${repertoire}/fichier"
 
#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

Nota :

"${repertoire}/fichier" = "/chemin/du/fichier"

Explication

Cette méthode est simple, efficace et correcte.

Commande

 IFS= read -r

Options

 IFS (Internal Field Separator)

C'est une variable spéciale de votre shell.
Avec elle, 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.

Entrez la ligne de commande suivante pour visualiser le contenu de la variable IFS utilisée par votre interpréteur de commande.

set | grep IFS

read -r

read avec option -r, sinon les backslashes (\) seront interprétés, or nous voulons conserver le contenudu fichier intact.

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.1388422821.txt.gz · Dernière modification: 30/12/2013 18:00 par MicP

Pied de page des forums

Propulsé par FluxBB