IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

importer un fichier texte dans un tableau


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut importer un fichier texte dans un tableau
    Bonjour,

    je suis débutant en shell, et j'essaye d'écrire un script dans lequel je souhaite importer un fichier texte (nommé line_sampling.xy, une suite de nombres réels) dans un tableau.
    j'ai trouvé des commandes telles que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    declare -a tab=($line_sampling.xy)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set -a tab < line_sampling.xy
    mais si je fais un:
    il n'en ressort rien
    un petit coup de main serait le bienvenu

    merci
    seb

  2. #2
    Membre expérimenté
    Homme Profil pro
    Gérant infopsylon
    Inscrit en
    Juin 2010
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Gérant infopsylon
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 215
    Par défaut
    Bonjour,

    Vous pouvez essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    set -A tab $(cat fichier)

    Mais, à quoi ressemble votre fichier ?
    Pourquoi vouloir un tableau, quel est votre besoins ?

    Lilian

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut
    l'option -A n'est pas reconnue par set (je suis en bash, ceci explique peut-être cela). si je mets -a, mon echo ne renvoie rien (j'ai pas eu le temps cet après'm de chercher plus sur l'option set)

    j'ai un fichier tel que: position1, valeur1; position2, valeur2, etc
    sous sa forme actuelle, il s'agit d'un fichier 2 colonnes. mais si j'ai bien compris, il ne peut être lu que comme une succession de valeurs (fichier 1 colonne) dans un bash.

    je veux manipuler les données 1 (position1, valeur1), puis 2 (position2, valeur2).

    je me dis que le plus simple est de faire un tableau, avec une boucle ayant un incrément +2 pour pouvoir bosser sur les données 1 (position1, valeur1) avec i=0 et i+1=1, puis sur les données 2 (position2, valeur2) avec i=2 et i+1=3, etc.

    ou alors passer par awk?
    seb

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Il te faut redéfinir le séparateur en entrée (la variable $IFS) comme étant le saut de ligne (\n) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ cat plop
    pos1, val1
    pos2, val2
    pos3, val3
    
    $ OIFS=$IFS; IFS=$'\n';declare -a tab=( $(cat plop) );IFS=$OIFS
    
    $ echo ${tab[0]}
    pos1, val1
    
    $ echo ${tab[2]}
    pos3, val3
    
    $

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 659
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 659
    Par défaut
    Bonjour,

    avec BASH 4, utilisez mapfile.

    voir :
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 12
    Par défaut
    bonjour,

    merci pour vos réponses.
    mais je suis passé par une autre solution (je n'avais pas accès à une machine hier, seulement à un bout de papier...). ce qui m'a obligé à faire avec mes petites connaissances...

    je fais en pseudo-code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fich=
    while read ligne
    do
    declare -a tab=($ligne)
    #j'ai donc accès aux 2 variables de ma ligne par ${tab[0]} et ${tab[1]}
    done < $fich
    zipe31: ta solution m'empêche de travailler séparément sur pos1 et var1 car ils appartiennent au même index dans le tableau (cad tab[0]). si j'ai bien tout compris...
    N_BaH: j'essayerai la prochaine fois avec mapfile. merci du tuyau

    seb

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par seb.garcia Voir le message
    zipe31: ta solution m'empêche de travailler séparément sur pos1 et var1 car ils appartiennent au même index dans le tableau (cad tab[0]). si j'ai bien tout compris...
    Qu'à cela ne tienne s'il n'y a que 2 valeurs séparées par une virgule et/ou espace...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ echo ${tab[0]}
    pos1, val1
    
    $ echo ${tab[0]%,*}
    pos1
    
    $ echo ${tab[0]#* }
    val1

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Importer des caractères d'un fichier texte dans un tableau
    Par Crepit dans le forum C#
    Réponses: 7
    Dernier message: 05/02/2014, 11h18
  2. [VB6]Importer un fichier texte dans une table ACCESS
    Par jean-pierre96 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/02/2013, 15h55
  3. Importer un fichier texte dans un tableau de DBL
    Par NI6211User dans le forum LabVIEW
    Réponses: 14
    Dernier message: 21/07/2011, 12h24
  4. [Tableaux] Stocker un fichier texte dans un tableau
    Par clairette59 dans le forum Langage
    Réponses: 13
    Dernier message: 27/01/2006, 23h48
  5. Réponses: 5
    Dernier message: 15/05/2005, 08h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo