Pages : 1
#1 Le 20/11/2007, à 19:08
- Prex-Ly
Problème bash...
Salut,
voici mon petit problème :
j'essais d'extraire plusieurs données à partir d'une ligne d'un fichier par exemple:
abcz def12 ghik
jklm mno pqr
...
et de les stocker dans des variables distinctes par exemple pour l'itération 1
var1=abcz
var2=def12
var3=ghik
itération 2
var1=jklm
var2=mno
var3=pqr
etc..
j'ai la gestion de la boucle :
IFS=$'\n'
for line in $(cat monfichier)
do
commande
done
mais je n'arrive pas a extraire les info de ligne
merci d'avance
Hors ligne
#2 Le 20/11/2007, à 19:15
- rahancrao
Re : Problème bash...
Salut,
Tes lignes sont elles bien définies, c'est à dire comme dans ton exemple, y'a t'il seulement 3 champs par ligne séparés par des espaces ?
Ingé en préprod Unix : forcément sous GNU/Linux à la maison (Ubuntu 10.10 + ArchLinux tout neuf)
Hors ligne
#3 Le 20/11/2007, à 19:20
- Prex-Ly
Re : Problème bash...
oui je les ai prise d'un fichier ods en fait c'est des tabulations et il y a toujours 3 champs.
Mais je crois que j'ai trouvé:
var1=$line|awk'{print $1}'
Hors ligne
#4 Le 20/11/2007, à 19:25
- Prex-Ly
Re : Problème bash...
haaaaa big problème!!
echo $line | awk '{print $1}'
affiche bien le champs un mais l'affection ne marche pas...
Hors ligne
#5 Le 20/11/2007, à 19:29
- rahancrao
Re : Problème bash...
var1=`echo $line | awk '{print $1}'`
devrait affecter le champ 1 à la variable var1, suffit de mettre donc dans ta boucle :
var1=`echo $line | awk '{print $1}'`
var2=`echo $line | awk '{print $2}'`
var3=`echo $line | awk '{print $3}'`
et tu as tes 3 variables par itération.
Ingé en préprod Unix : forcément sous GNU/Linux à la maison (Ubuntu 10.10 + ArchLinux tout neuf)
Hors ligne
#6 Le 20/11/2007, à 19:34
- Prex-Ly
Re : Problème bash...
merci super les `` je débute et c'est pas facile de s'y retrouver ...
sinon pour lire le fichier j'ai souvent vu :
while read line do
commande
done
mais je ne comprend pas où il vont chercher le fichier??
Hors ligne
#7 Le 20/11/2007, à 19:49
- rahancrao
Re : Problème bash...
C'est tout l'intérêt du pipe "|" qui renvoit à l'instruction située à droite de lui même la sortie standard de l'instruction située à gauche :
cat $fichier | while read ligne
do
blabla $ligne
done
Ingé en préprod Unix : forcément sous GNU/Linux à la maison (Ubuntu 10.10 + ArchLinux tout neuf)
Hors ligne
#8 Le 20/11/2007, à 19:58
- Prex-Ly
Re : Problème bash...
Lorsque j'ai essayé ce script il ne s'est rien passé avec blabla = echo ???
Hors ligne
#9 Le 20/11/2007, à 20:02
- Prex-Ly
Re : Problème bash...
haaa g pisté c'est le $ devant fichier qui est en trop...
merci pour l'info
Hors ligne
Pages : 1