Lire efficacement un fichier ligne par ligne dans un script shell

Lire efficacement un fichier ligne par ligne dans un script shell

La lecture d'un fichier en ligne par ligne est une tâche courante dans de nombreux scripts de shell, car il vous permet de traiter chaque ligne d'un fichier séparément et d'effectuer des actions en fonction du contenu de chaque ligne. Il existe plusieurs façons de lire un fichier ligne par ligne dans un script de shell Linux, mais certaines méthodes sont plus efficaces que d'autres. Dans cet article, nous explorerons certaines des façons les plus efficaces de lire une ligne par ligne dans un script shell Linux.

Utiliser While Loop

La façon la plus élémentaire de lire un fichier ligne par ligne dans un script shell est d'utiliser une boucle de lecture et la commande de lecture. La commande de lecture lit une ligne d'entrée du fichier et la stocke dans une variable, qui peut ensuite être traitée par le script. La boucle while vous permet d'itérer à travers les lignes du fichier jusqu'à ce que la fin soit atteinte. Voici un exemple de l'apparence de cela:

#!/ usr / bin / env bash # lisez la ligne par ligne pendant la ligne de lecture; Do # Process Content Single Line Echo "$ line" fait < file.txt
1234567#!/ usr / bin / env bash # lisez la ligne de fichier par ligne de lecture en ligne; Do # Process Content Single Line Echo "$ line" fait < file.txt

Cette méthode est simple et facile à comprendre, mais elle a certaines limites. Une limitation est que la commande de lecture ne peut lire qu'une seule ligne à la fois, il peut donc être plus lent pour les fichiers volumineux avec de nombreuses lignes. De plus, la commande de lecture ne peut lire que de l'entrée standard (stdin), vous devez donc utiliser le < operator to redirect the contents of the file to stdin. This can be inconvenient if you need to read from multiple files or if you want to read from a file that is not in the current directory.

Utilisation de boucle avec chat

Un moyen plus efficace de lire un fichier ligne par ligne dans un script shell consiste à utiliser la commande Cat en combinaison avec une boucle de temps. La commande CAT lit un fichier et publie son contenu à Stdout, qui peut ensuite être traité par la boucle while. Voici un exemple de l'apparence de cela:

#!/ usr / bin / env bash # lisez la ligne par ligne pendant la ligne de lecture; Do # Process Content Single Line Echo "$ line" fait < <(cat file.txt)
1234567#!/ usr / bin / env bash # lisez la ligne de fichier par ligne de lecture en ligne; Do # Process Content Single Line Echo "$ line" fait < <(cat file.txt)

Cette méthode est plus efficace que la commande de lecture car elle lit le fichier entier en mémoire à la fois, plutôt que de lire une ligne à la fois. Cela peut être plus rapide pour les fichiers volumineux avec de nombreuses lignes. De plus, la commande CAT peut lire à partir de n'importe quel fichier, pas seulement stdin, vous pouvez donc l'utiliser pour lire à partir de plusieurs fichiers ou fichiers qui ne sont pas dans le répertoire actuel.

Utilisation de la boucle avec SED

Une autre façon efficace de lire un fichier ligne par ligne dans un script shell est d'utiliser la commande SED en combinaison avec une boucle de temps. La commande SED est un puissant outil de traitement de texte qui peut lire un fichier et sortir son contenu sur stdout, une ligne à la fois. Voici un exemple de l'apparence de cela:

#!/ usr / bin / env bash # lisez la ligne par ligne pendant la ligne de lecture; Do # Process Content Single Line Echo "$ line" fait < <(sed -n -e 1p file.txt)
1234567#!/ usr / bin / env bash # lisez la ligne de fichier par ligne de lecture en ligne; Do # Process Content Single Line Echo "$ line" fait < <(sed -n -e 1p file.txt)

Cette méthode est similaire à la commande CAT, mais elle est plus efficace car elle ne sort qu'une seule ligne à la fois. Cela peut être plus rapide pour les fichiers volumineux avec de nombreuses lignes. De plus, la commande SED a de nombreuses options et fonctionnalités qui peuvent être utilisées pour manipuler la sortie, c'est donc un outil très flexible pour le traitement de texte.

En résumé, il existe plusieurs façons de lire un fichier ligne par ligne dans un script shell Linux.