[Script Shell] Lire un fichier ligne par ligne
Publié : jeu. 27 mars 2008, 10:39
Ce petit script permet de lire un fichier texte ligne par ligne et de faire un traitement de ces dernières. On peut les traiter soit par le no de la ligne ou son contenu.
Pour l'exemple, on imagine qu'on ait un fichier demo.conf dans notre répertoire Home et que le contenu du fichier soit :
Nous aurions comme résultat à l'écran :
par ceci par exemple :
Pour l'exemple, on imagine qu'on ait un fichier demo.conf dans notre répertoire Home et que le contenu du fichier soit :
Archlinux
2007.08-2
i686
Code : Tout sélectionner
#!/bin/sh
#Emplacement du fichier texte a traiter
file=$HOME/demo.conf
#Initialisation du compteur x=0
#Initialisation de la boucle pour la lecture du fichier ligne par ligne
while [ $x -lt `(wc -l <$file` ]; do
#Incrémentation du compteur de 1
x=$(($x+1))
#Lecture de la ligne entière et récupération de la valeur dans la variable ln
ln=`head -n $x $file | tail -n 1`
#Traitement de la ligne selon son numéro
if [ $x -eq 1]; then
echo "Distribution : " ${ln}
elif [ $x -eq 2]; then
echo "Version :" ${ln}
elif [ $x -eq 3]; then
echo "Architecture :" ${ln}
fi
#Fin de lecture du fichier
done
#Fermeture du script
exit 0
Maintenant, si nous aurions voulu traiter le fichier directement par le contenu de la ligne, sans s'occuper de son numéro, il suffit de remplacer la partie :Distribution : Archlinux
Version : 2007.08-2
Architecture : i686
Code : Tout sélectionner
#Traitement de la ligne selon son numéro
if [ $x -eq 1]; then
echo "Distribution : " ${ln}
elif [ $x -eq 2]; then
echo "Version :" ${ln}
elif [ $x -eq 3]; then
echo "Architecture :" ${ln}
fi
Code : Tout sélectionner
#Traitement de la ligne selon son contenu
if [ "${ln}" == "i686" ]; then
echo "Le dépôt est : http://repo.archlinux.fr/i686/"
else
echo "Le dépôt est : http://repo.archlinux.fr/x86_64/"
if