En parcourant le contenu d’un fichier dans Bash
Souvent, il est nécessaire de lire chaque ligne d’un fichier à l’aide d’un script bash. Il existe diverses approches pour lire les lignes d’un fichier. Dans l’exemple ci-dessous, nous avons d’abord décrit comment créer un exemple de fichier, puis exécuter un script lisant cet exemple de fichier.
Créer un fichier pour le Lire
# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt
Exécute le code ci-dessus nous donne le résultat suivant −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
Utilisation de la Do-While
Dans cette approche, nous utilisons une boucle while pour lire un fichier., Nous donnons le nom de fichier comme entrée à la fin du fichier. Nous créons d’abord un script et lui donnons l’autorisation d’exécution. Alors seulement il peut lire le fichier et afficher le résultat.
#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt
Exécute le code ci-dessus nous donne le résultat suivant −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
Utilisation et
En suivant l’approche que nous utilisons une boucle for avec la clause in. Ici, nous stockons le résultat de la commande cat (Qui est chaque ligne) dans une variable qui fait partie de la boucle for et qui fait écho à la variable.,
#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done
Exécute le code ci-dessus nous donne le résultat suivant −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday
Avec seulement echo
On peut aussi obtenir le contenu du fichier à l’aide seulement d’écho. Mais le résultat sortira comme un tableau de lignes et imprimé comme une sortie d’une ligne montrant la combinaison de toutes les lignes.
echo $( < a_file.txt )
L’exécution du code ci-dessus nous donne le résultat suivant:
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
lecture D’un fichier avec des lignes vides
Si un fichier a des lignes vides, nous pouvons les éviter dans la sortie en utilisant le code suivant., Cela utilise le Separator (séparateur de champ interne) est défini sur chaîne vide afin que les lignes vides soient traitées comme un séparateur de champ et évitées dans la sortie. En supposant qu’il y ait des lignes vides entre la 3ème et la 4ème ligne, ces privilèges vides ne seront pas imprimés.
#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt
Exécute le code ci-dessus nous donne le résultat suivant −
MondayTuesdayWednesdayThursdayFridaySaturdaySunday