Table des matières

Lire un fichier texte ligne par ligne

Script

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

read-file.sh
#variable du fichier
fichier="test.txt"
 
#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
Le fichier test.txt doit exister dans le même répertoire que le script

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 blancs2), 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 contenu du fichier intact.

Exemple

Le contenu du fichier test.txt utilisé dans cet l'exemple est :

test.txt
Dark
TUX

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

Nom : Dark
Prénom: TUX

Bien entendu, vous pouvez modifier le script selon vos besoins.

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
2)
espaces, tabulations