Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 sad
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...

big_smile 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