Bash pour chaque ligne dans un fichier

Bash pour chaque ligne dans un fichier
La boucle «pour» dans Bash peut être utilisée avec différentes variations pour effectuer plusieurs tâches. Une telle variation est la «pour chaque ligne dans le fichier» qui est responsable de la lecture de toutes les lignes d'un fichier. Dans cet article, nous parlerons des méthodes d'utilisation «pour chaque ligne dans le dossier» dans Bash.

Remarque: les méthodes ci-dessous ont été démontrées sur Ubuntu 20.04. Cependant, ils fonctionneront également bien avec toute autre distribution Linux.

Méthodes d'utilisation de «pour chaque ligne dans le fichier» en bash:

Dans ces méthodes, nous vous montrerons un exemple dans lequel vous pouvez lire chaque ligne à partir d'un fichier, puis vous pouvez soit l'afficher sur le terminal, soit même stocker ces lignes dans un autre fichier. Jetons un coup d'œil à ces deux méthodes.

Méthode n ° 1: Pour afficher les lignes de lecture sur le terminal:

Pour afficher les lignes d'un fichier sur le terminal en utilisant «pour chaque ligne dans le fichier», vous devrez effectuer les étapes suivantes:

Étape n ° 1: Création d'un fichier texte factice:

Tout d'abord, vous devez créer un fichier texte avec des données aléatoires pour le souci de la démonstration. Bien que ce fichier texte puisse être créé n'importe où, cependant, il est fortement recommandé de le créer dans le dossier à domicile. Pour ce faire, cliquez sur l'icône du gestionnaire de fichiers en surbrillance dans l'image ci-dessous:

  • Maintenant, cliquez avec le bouton droit n'importe où dans votre dossier à domicile et sélectionnez la nouvelle option de document dans le menu qui apparaît. Puis sélectionnez l'option de document vide. Une fois qu'un document vide a été créé dans votre dossier à domicile, fournissez le nom de votre choix pour lui suivi par le .Extension TXT. Dans cet exemple, nous l'avons nommé foreachline.SMS.


  • Double-cliquez sur ce fichier texte pour l'ouvrir, puis saisissez n'importe quel texte aléatoire comme indiqué dans l'image suivante. Après avoir fait cela, enregistrez ce fichier et fermez-le.

  • Étape # 2: Création du script bash:

    Créez maintenant un fichier bash de la même manière que vous avez créé le fichier texte dans le dossier domestique, sauf que cette fois, vous devez fournir son nom suivi du .extension sh au lieu du .Extension TXT. Nous avons nommé notre fichier bash comme Forachline.sh mais vous pouvez lui donner n'importe quel nom de votre choix.

    Ouvrez ce fichier en double-cliquez dessus, puis saisissez le script indiqué dans l'image ci-dessous dans votre fichier de bash nouvellement créé. Ici, la première ligne est là pour indiquer que le script suivant est un script bash. Nous avons simplement créé une variable nommée «fichier» et lui avons attribué le nom de notre fichier texte comme sa valeur I.e. Foreachline.SMS. Ensuite, nous avons créé une variable nommée «Lignes» et l'avons égalisée à «$ (fichier Cat $)». Ici, la commande CAT lit le contenu de notre fichier texte et lorsqu'il est précédé d'un symbole «$», le contenu lu par cette commande sera stocké dans la variable des lignes. De cette façon, toutes les lignes du fichier nommé ForEachline.txt sera stocké dans la variable des lignes. Ensuite, nous avons appliqué la boucle «pour» qui a une «ligne» itérateur «. Cet itérateur fonctionne sur la variable «lignes» que nous avons créée ci-dessus et il iratera à travers toutes les lignes une par une. Ensuite, dans le bloc «Do-Done», nous avons simplement affiché toutes ces lignes sur le terminal en utilisant la commande Echo.

    Étape # 3: Exécution du script bash:

    Maintenant, lancez le terminal dans Ubuntu 20.04, puis exécutez la commande suivante dedans pour exécuter le script bash créé ci-dessus:
    Bash Forachline.shot

    Lorsque cette commande fera l'exécution du script bash, vous pourrez voir toutes les lignes de votre fichier texte sur votre terminal comme indiqué dans l'image suivante:

    Méthode n ° 2: pour enregistrer toutes les lignes de lecture dans un autre fichier:

    Dans cette méthode, nous avons légèrement modifié le script bash créé dans la méthode ci-dessus pour enregistrer toutes les lignes de lecture dans un nouveau fichier texte plutôt que de les afficher sur le terminal. Pour ce faire, effectuez les étapes mentionnées ci-dessous:

    Étape n ° 1: Modification du script bash créé ci-dessus et exécutant:

    Ouvrez le script bash que vous avez créé dans la méthode ci-dessus et modifiez-la comme indiqué dans l'image suivante. Nous avons simplement ajouté le symbole ">>" suivi d'un nouveau nom de fichier après la commande echo dans le bloc "do-due". Cette modification enregistrera toutes les lignes de lecture dans un nouveau fichier texte au lieu de les afficher sur le terminal. Maintenant, exécutez le script bash via le terminal avec la commande bash suivie du nom du fichier bash. Cette fois, lorsque le script bash s'exécutera, il créera un nouveau fichier texte dont le nom dans ce cas est Newfile.SMS.

    Étape # 2: Accès au fichier texte nouvellement créé:

    Pour vérifier si toutes les lignes «Read» ont été enregistrées dans le nouveau fichier texte, vous pouvez simplement afficher le contenu de ce fichier en exécutant la commande suivante dans votre terminal:
    chat newfile.SMS

    La sortie indiquée dans l'image ci-dessous vous assurera que toutes les lignes de lecture ont été copiées dans le nouveau fichier texte.

    Conclusion:

    De cette façon, vous pouvez utiliser «pour chaque ligne dans le fichier» pour lire toutes les lignes d'un fichier, puis la manipuler avec ces lignes. Nous venons de parler des deux scénarios de base de cet article, cependant, vous pouvez même utiliser cette boucle pour des problèmes plus complexes.