Lire chaque mot d'une ligne

Résolu/Fermé
lanulledu28 - 1 janv. 2013 à 21:58
 lanulledu28 - 3 janv. 2013 à 11:24
Bonjour,

Je suis novice et je cherche un peu d'aide.
Je souhaite lire chaque mot d'une ligne d'un fichier pour le mettre dans une variable.
Par exemple,
dans le fichier Toto :
ligne=tutu titi 123 tata 251 144 

Et je voudrais : 
var1 = tutu
var2=titi
....

J'utilise la fonction sur ma ligne (que j'ai deja extraite)
var1 = 'ligne|gawk -F" " '{print $1}'


et voudrais plutôt utiliser sfift car j'ai pas mal de mot sur la ligne.

merci de vos reponses

A voir également:

10 réponses

Utilisateur anonyme
2 janv. 2013 à 15:33
je pense que je vais tester chaque variable l'une autre l'autre
Bon courage!

J'insiste: tu devrais construire le fichier de données avec un séparateur (que ce soit une virgule, un point-virgule, une tabulation, ou autre chose).
2
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 janv. 2013 à 07:31
Salut,

Utilise un tableau plutôt, non ?

$ ligne=( tutu titi 123 tata 251 144 )

$ echo ${ligne[*]}
tutu titi 123 tata 251 144

$ echo ${#ligne[*]}
6

$ echo ${ligne[0]}
tutu

$ echo ${ligne[2]}
123

$ echo ${ligne[5]}
144

$ 

0
salut,

Je souhaite lire chaque mot d'une ligne d'un fichier pour le mettre dans une variable.

Ce n'est pas une stratégie viable.
Tu vas être très embêté par la suite pour retrouver la bonne variable, et ça va amener une solution risquée.

Utiliser un tableau peut être une solution, mais est-ce vraiment utile ?

Sans en savoir plus, je ne peux pas en dire davantage.
0
Oui pour mettre chaque variable a la bonne place ça risque d'être tendu.

Une ligne est structurée de la façon suivante :
Nom1 Prenom1 Age Année_Naissance Date_Abonnement Type_Abonnement Status(optionnel) 1111  Magazine Numéro_Magazine 

ce qui donne : 
Dupond Gerard 23 1990 12/12/12 mensuel impayé 1111 Sport 2 

Martin Paul 35 1961 12/12/11 mensuel 1111 Science 5



Un tableau peut être problématique car le nombre de variable n'est pas fixe ...
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 janv. 2013 à 11:29
Si tu nous disais ce que tu comptes faire exactement, peut être pourrions-nous t'aider au mieux, parce que là c'est un peu confus ;-\
0
Avec cette ligne je souhaite mettre les variables telque
Nom = Dupond
Prénom=Gerard
Age =23
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
2 janv. 2013 à 11:47
Un tableau peut être problématique car le nombre de variable n'est pas fixe ...

#1- construire correctement le fichier de données : CSV? champs de longueurs fixes?
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 janv. 2013 à 11:51
$ cat plop 
Dupond Gerard 23 1990 12/12/12 mensuel impayé 1111 Sport 2 
Martin Paul 35 1961 12/12/11 mensuel 1111 Science 5

$ cat foo.sh 
#!/bin/bash

while read Nom Prenom Age Anniv Abon Type Status Ref Mag NumMag
do
echo "
Nom = ${Nom}
Prénom = ${Prenom}
Age = ${Age}
Date de Naissance = ${Anniv}
Date d'abonnement = ${Abon}
Type d'abonnement = ${Type}
Status = ${Status}
Référence = ${Ref}
Magazine = ${Mag}
Numéro de magazine = ${NumMag}
"
done < plop

$ ./foo.sh 

Nom = Dupond
Prénom = Gerard
Age = 23
Date de Naissance = 1990
Date d'abonnement = 12/12/12
Type d'abonnement = mensuel
Status = impayé
Référence = 1111
Magazine = Sport
Numéro de magazine = 2


Nom = Martin
Prénom = Paul
Age = 35
Date de Naissance = 1961
Date d'abonnement = 12/12/11
Type d'abonnement = mensuel
Status = 1111
Référence = Science
Magazine = 5
Numéro de magazine = 


$

0
Effectivement je ne suis mal exprimé,

En donnée brut j'ai plusieurs lignes telque
->Dupond Gerard 23 1990 12/12/12 mensuel impayé 1111 Sport 2
->Martin Paul 35 1961 12/12/11 mensuel 1111 Science 5
->Durant 25 1955 12/12/12 hebdo 1111 Tricot 4 Musco 9


malheureusement , les variables ne sont pas à la meme place pour chaque ligne.7Par exemple , après la variable Nom on peut lire soit Prenom soit directement l'age Age ,
de meme pour status pour la deuxieme ligne tout est decalé.

Tu obtient :
Nom = Martin
Prénom = Paul
Age = 35
Date de Naissance = 1961
Date d'abonnement = 12/12/11
Type d'abonnement = mensuel
Status = 1111
Référence = Science
Magazine = 5
Numéro de magazine =

alors qu'il faudrait :

Nom = Martin
Prénom = Paul
Age = 35
Date de Naissance = 1961
Date d'abonnement = 12/12/11
Type d'abonnement = mensuel
Status =
Référence = 1111
Magazine = Science
Numéro de magazine = 5
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 janv. 2013 à 14:44
malheureusement , les variables ne sont pas à la meme place pour chaque ligne
Alors c'est quasiment du domaine de l'impossible ;-((
0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
2 janv. 2013 à 14:53
à moins que le contenu possible de chaque champ soit connu
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 janv. 2013 à 14:55
Oui pour certains, mais en ce qui concerne le champ "Prenom", sans compter les 4 derniers qui sont apparemment très aléatoire concernant l'ordre ;-\

En donnée brut j'ai plusieurs lignes telque
->Dupond Gerard 23 1990 12/12/12 mensuel impayé 1111 Sport 2
->Martin Paul 35 1961 12/12/11 mensuel 1111 Science 5
->Durant 25 1955 12/12/12 hebdo 1111 Tricot 4 Musco 9 
0
Utilisateur anonyme
2 janv. 2013 à 15:07
Le principe élémentaire d'un(e) fichier/base de données, c'est d'être organisé(e).
Imaginez une feuille excel sans colonnes! un CSV sans séparateur! des longueurs fixes qui changent!

Sinon, il reste les dés.. Ah ben non, les angles séparent les faces!
Les billes, alors!
XD
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
2 janv. 2013 à 15:11
Les billes, alors!
On risque de tourner en rond ;-))
0
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
Modifié par dubcek le 2/01/2013 à 14:41
hello
pour savoir qu'à la ligne 2 il y a un champ vide (status) après manuel, il faudrait une variable vide ""
0
Mouais je pense que je vais tester chaque variable l'une autre l'autre..... :/
0
j'allais oublier mais merci à tous de m'avoir aider.
0