Script Shell (bash, zsh, ksh, dash,…), pour lire un fichier texte, ligne par ligne :
#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
test.txt
doit exister dans le même répertoire que le script
Cette méthode est simple, efficace et correcte.
IFS= read -r
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 avec option -r, sinon les backslashes (\) seront interprétés, or nous voulons conserver le contenu du fichier intact.
Le contenu du fichier test.txt
utilisé dans cet l'exemple est :
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.