Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:programmation:bash:read:parcourir-fichier-texte [17/08/2010 16:24] cthuluh |
doc:programmation:bash:read:parcourir-fichier-texte [19/08/2010 21:25] smolski |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Lire un fichier ligne par ligne ====== | + | ====== readfile ====== |
- | Si vous désirez lire avec un Script Shell (bash, zsh, ksh, dash,...), un fichier texte, ligne par ligne, voici le code à utiliser : | + | Lire un fichier ligne par ligne |
+ | |||
+ | ===== Script ===== | ||
+ | |||
+ | Script Shell (bash, zsh, ksh, dash,...), pour lire un fichier texte, ligne par ligne : | ||
+ | <code bash> | ||
+ | #variable du fichier | ||
+ | fichier="/chemin/du/fichier" | ||
- | <code> | ||
#initialisation du compteur | #initialisation du compteur | ||
i=0 | i=0 | ||
while IFS= read -r ligne; do | while IFS= read -r ligne; do | ||
+ | |||
#traitement des lignes 1 et 2 | #traitement des lignes 1 et 2 | ||
if [ "$i" -eq 1 ]; then | if [ "$i" -eq 1 ]; then | ||
Ligne 20: | Ligne 27: | ||
done < "$fichier" | done < "$fichier" | ||
- | exit 0 | + | exit 0</code> |
- | </code> | + | |
+ | ===== Explication ===== | ||
+ | |||
+ | Cette méthode est simple, efficace et __correcte__. | ||
+ | |||
+ | ==== Commande ==== | ||
+ | |||
+ | IFS= read -r | ||
+ | |||
+ | === Options === | ||
+ | |||
+ | IFS | ||
+ | |||
+ | C'est une variable spéciale de votre shell. \\ | ||
+ | Avec elle, quand votre ligne contient des caractères //blancs//((espaces, tabulations)), **read** les supprime au début et à la fin, avant de placer le résultat dans **ligne**. | ||
+ | |||
+ | read -r | ||
+ | |||
+ | read avec option -r, sinon les backslashes (**\**) seront interprétés, or nous voulons conserver le contenudu fichier intact. | ||
- | Explication : cette méthode est simple, efficace et __correcte__. | + | ===== Exemple ===== |
- | Il est nécessaire d'utiliser l'option **-r** de **read**, sinon | + | |
- | les backslashes (**\**) seront interprétés, or nous voulons conserver le contenu | + | |
- | du fichier intact. | + | |
- | De plus, on utilise **IFS=** **read**. **IFS** est une variable spéciale de | + | |
- | votre shell. Quand elle contient des caractères blancs (espaces, tabulations), **read** | + | |
- | supprime les caractères blancs de début et de fin, avant de placer le résultat dans **ligne**. | + | |
- | Si le fichier test.txt indiqué dans l'exemple contiendrait : | + | Si le fichier test.txt indiqué dans l'exemple contient : |
<code>Dark | <code>Dark | ||
TUX</code> | TUX</code> | ||
- | Lors de l'exécution du script, on aurait à l'écran : | + | Lors de l'exécution du script, on aura à l'écran : |
<code>Nom : Dark | <code>Nom : Dark | ||
Prénom: TUX</code> | Prénom: TUX</code> | ||
- | Bien entendu, vous devrez modifier le code selon vos besoins. | + | Bien entendu, vous devez modifier le code selon vos besoins. |