Bash : lors de la lecture de la ligne

Bash While Read Line

Lorsque vous travaillez sur des scripts bash, vous devrez parfois lire un fichier ligne par ligne. Expliquons avec un exemple. Vous avez des données dans un fichier texte qui doivent être exécutées ou traitées à l'aide d'un script. Ainsi, l'exécution d'un script bash pour traiter un fichier texte est très différente. Vous devez suivre une syntaxe spécifiée pour lire un fichier ligne par ligne. Cet article vous aidera à lire une ligne d'un fichier en utilisant la boucle while dans Bash.

Syntaxe de base de la ligne while read

La syntaxe suivante est utilisée pour le shell bash pour lire un fichier à l'aide de la boucle while :







tandis que lire -rligne;
faire
chassèrent '$ligne';
terminé <fichier.entrée

L'option '-r' dans la syntaxe mentionnée ci-dessus transmise à la commande read qui évite que la barre oblique inverse ne soit interprétée. L'option 'input_file' a représenté le nom de votre fichier auquel vous souhaitez accéder en utilisant la commande 'read'.



Le séparateur de champ interne abrégé en IFS peut être utilisé avant que la commande de lecture ne soit définie sur la chaîne nulle qui empêche la suppression des espaces blancs de début ou de fin.



tandis que IFS=lire -rligne;
faire
chassèrent $ligne;
terminé <fichier.entrée

Ouvrez le terminal à l'aide du raccourci Ctrl + Alt + t, puis exécutez les commandes suivantes dessus.





Exemple n°1 : Lecture de fichier ligne par ligne

Prenons un exemple dans lequel supposons que nous ayons un fichier nommé OS.txt contenant les noms de toutes les distributions Linux importantes. Si vous souhaitez lire un fichier sans utiliser la commande 'cat', vous pouvez à cet effet exécuter la commande suivante pour effectuer la tâche particulière. Nous utiliserons la boucle while qui lira chaque ligne du fichier OS.txt et stockera le contenu de chaque étape dans une variable $line que vous pourrez afficher plus tard.

Collez les noms suivants des distributions Linux dans le fichier OS.txt



CentOS
Ubuntu
Debian
LinuxMint $tandis que lireligne;
faire
chassèrent $ligne;
terminé <OS.txt


À partir de la commande ci-dessus, vous obtiendrez la réponse suivante dans la fenêtre du terminal :

Exemple n°2 : Lecture de fichier à l'aide du script bash

Créez un fichier bash, puis ajoutez le code mentionné ci-dessous dans ce fichier pour lire le contenu du fichier. Vous pouvez stocker le fichier texte précédent dans une nouvelle variable $filename et la variable $n est utilisée pour conserver la valeur de chaque ligne. Maintenant, en utilisant la boucle while, nous allons lire chaque ligne d'un fichier avec un numéro de ligne particulier.

#!/bin/bash
nom de fichier='OS.txt'
m=1
tandis que lireligne;
faire
# pour lire chaque ligne
chassèrent 'Ligne de distribution du système d'exploitation no.$n:$ligne'
m= $((n+1))
terminé < $nom de fichier

Enregistrez le fichier sous le nom OSinfo.sh et tapez la commande suivante sur le terminal pour exécuter le script bash ci-dessus.

$frapperOSinfo.sh

Maintenant, exécutez la commande cat pour afficher le contenu du fichier d'origine.

$chatOS.txt

Méthode alternative pour la lecture de fichiers

Utilisation de la transmission du nom de fichier à partir d'une commande

Dans un fichier bash, vous devez ajouter le script de code suivant. Dans ce script, nous devons prendre un nom de fichier comme argument. Premièrement, la valeur d'un argument est lue par une variable $1 qui a un nom de fichier pour la lecture. Il vérifiera que le nom de fichier existe à l'emplacement spécifié, puis en utilisant la boucle while, il lira un fichier ligne par ligne similaire à l'exemple précédent.

#!/bin/bash
nom de fichier=1 $
tandis que lireligne;faire
# lecture de chaque ligne
chassèrent $ligne
terminé < $fichier.SMS

Enregistrez le script ci-dessus nommé 'Readline.sh' et exécutez la commande suivante sur le terminal pour exécuter le script mentionné ci-dessus :

Dans la sortie ci-dessus, vous remarquerez que le fichier 'OSinfo.txt' passe en argument et que le contenu de 'OSinfo.txt' sera affiché après avoir supprimé les espaces supplémentaires. Vous pouvez afficher le contenu du fichier d'origine en exécutant « cat OSinfo.txt ».

Conclusion

Dans cet article, nous avons expliqué comment lire des lignes à l'aide de la boucle while dans la programmation bash. Nous avons implémenté différentes méthodes utilisant le script bash ou vous pouvez simplement utiliser un fichier texte pour effectuer la lecture d'un fichier ligne par ligne. Si vous souhaitez en savoir plus sur des exemples, vous pouvez également utiliser la syntaxe mentionnée ci-dessus sur votre système. J'espère que vous avez apprécié ce tutoriel et qu'il serait unique pour vous. Informez-vous en cas d'erreur.