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 | ||
doc:programmation:bash:read:parcourir-fichier-texte [17/08/2010 16:24] cthuluh |
doc:programmation:bash:read:parcourir-fichier-texte [16/12/2015 17:38] milou |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Lire un fichier ligne par ligne ====== | + | ====== Lire un fichier texte ligne par ligne ====== |
- | Si vous désirez lire avec un Script Shell (bash, zsh, ksh, dash,...), un fichier texte, ligne par ligne, voici le code à utiliser : | + | * Objet : script bash read file |
+ | * Niveau requis :{{tag>débutant avisé}} | ||
+ | * Commentaires : //Lire un fichier ligne par ligne avec le script read file// | ||
+ | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
+ | * Suivi : {{tag>à-tester}} | ||
+ | * Création par [[user>mattux]] le 09/07/2007 | ||
+ | * Testé par .... le .... | ||
+ | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=116004#p116004 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | |||
+ | |||
+ | |||
+ | ===== Script ===== | ||
+ | |||
+ | Script Shell (bash, zsh, ksh, dash,...), pour lire un fichier texte, ligne par ligne : | ||
+ | <code bash read-file.sh> | ||
+ | #variable du fichier | ||
+ | fichier="test.txt" | ||
- | <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 36: | ||
done < "$fichier" | done < "$fichier" | ||
- | exit 0 | + | exit 0</code> |
- | </code> | + | |
+ | <note>Le fichier ''test.txt'' doit exister dans le même répertoire que le script</note> | ||
+ | |||
+ | ===== Explication ===== | ||
+ | |||
+ | Cette méthode est simple, efficace et __correcte__. | ||
+ | |||
+ | ==== Commande ==== | ||
+ | |||
+ | <code user>IFS= read -r</code> | ||
+ | |||
+ | === Options === | ||
+ | |||
+ | IFS (Internal Field Separator) | ||
+ | |||
+ | 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**. | ||
+ | |||
+ | Entrez la ligne de commande suivante pour visualiser le contenu de la variable ''IFS'' utilisée par votre interpréteur de commande. | ||
+ | <code user>set | grep IFS</code> | ||
+ | === read -r === | ||
+ | |||
+ | read avec option -r, sinon les backslashes (**\**) seront interprétés, or nous voulons conserver le contenu du 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 : | + | Le contenu du fichier ''test.txt'' utilisé dans cet l'exemple est : |
- | <code>Dark | + | <file config test.txt> |
- | TUX</code> | + | Dark |
+ | TUX | ||
- | Lors de l'exécution du script, on aurait à l'écran : | + | </file> |
+ | 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 pouvez modifier le script selon vos besoins. |