[prg shell] lecture de fichier

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

[prg shell] lecture de fichier

Messagepar Lud0viskm » 21 Déc 2005 15:09

Bonjour, je fais appel aux fortiches du shell ;) ca va etre simple pour eux!!

Je dispose d'un fichier texte contenant plusieures lignes. Chaque ligne se compose d'une chaine de caracteres et a la fin il y a un retour chariot (simple en somme, une liste de noms)

Je voudrai faire un script qui vient lire le fichier ligne par ligne et qui execute une commande avec en parametre le chaine trouvée puis je passe à la ligne suivante etc.. jusqu'a la fin.

Je suis nul en programmation et je decouvre seulement linux. J'ai vu qu'il y avait des commande SED et AWK mais je ne les comprend pas trop et ne sais pas si elles sont utiles dans mon cas.
Merci a tous du coup de pouce.
Lud0viskm
Matelot
Matelot
 
Messages: 10
Inscrit le: 18 Fév 2005 10:35

Messagepar PlopSnooze » 21 Déc 2005 15:43

Cree un fichier test avec :
un
deux
trois
quatre
cinq

puis un script avec :

#!/bin/bash

for i in `cat /root/test.txt`
do
echo $i
done
exit 0

voilà
PlopSnooze
Matelot
Matelot
 
Messages: 4
Inscrit le: 21 Nov 2005 15:41
Localisation: Belgique

Messagepar Lud0viskm » 21 Déc 2005 15:54

Effectivement c'est pas compliqué lol merci beaucoup mais je suis nul en prog alors je suis peut etre excusé ;) MERCIII
@+
Lud0viskm
Matelot
Matelot
 
Messages: 10
Inscrit le: 18 Fév 2005 10:35

Messagepar Jacques- » 23 Déc 2005 01:01

Il y a même plus pratique, et plus "joli", surtout si les lignes peuvent contenir plusieurs noms.
On fait une boucle en insérant à chaque fois la ligne lue dans une ou plusieurs variables (si on indique 3 variables et qu'il y a 2 mots, la 3ème sera vide, s'il y a 4 ou 5 mots, la 3ème contiendra le reste de la ligne, et si on n'en indique qu'une, celle-ci contiendra la ligne entière).

while read Var1 Var2 Var3 ; do
# Traitement des variables, avec éventuellement un test sur le son contenu
[ -z "$Var1" ] && echo "Var1 est vide" || echo "Var1 existe"
[ -z "$Var2" ] && echo "Var2 est vide" || echo "Var2 existe"
[ -z "$Var3" ] && echo "Var3 est vide" || echo "Var3 existe"
done < NomDuFichierATraiter


Ca marche quelque soit la taille du fichier, même vide, dans ce cas rien ne se passe

Jacques
Avatar de l’utilisateur
Jacques-
Vice-Amiral
Vice-Amiral
 
Messages: 952
Inscrit le: 23 Jan 2003 01:00


Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité