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

Solaris Discussion :

Parcours champs avec séparateur dans lignes


Sujet :

Solaris

  1. #1
    Membre très actif
    Inscrit en
    Août 2006
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 160
    Par défaut Parcours champs avec séparateur dans lignes
    Bonjour !

    Voilà la problématique :
    J'ai des lignes dans un fichier qui contiennent 5 champs délimités par un espace.

    Si je les parcours de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    cat $fichierParametrage |while read ligne ; 
       do
        set $(echo $ligne) 
        champ1 = $1 
        ...
    done
    Le problème est que une seule ligne est lue si j'utilises la commande set !

    Ma question est la suivante :
    Comment lire dans une boucle chaque champ de la variable $ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for champs in $ Ligne 
    do 
       ....
       destinataire = $ champ1
       etc ... 
    done

    Je me dis avec Awk peut être , mais le problème est que je veux exécuter et appeller beaucoup de code à l'intérieur de la boucle.

  2. #2
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Simplifie to code avec quelque chose comme çà:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ligne=$(line)
    do
      set $ligne
      champs1=$1
      ..
    done < $fichierParametrage

  3. #3
    Membre très actif
    Inscrit en
    Août 2006
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 160
    Par défaut
    Merci.

    Mais en fait j'ai déjà le code avec "Set".
    Ce qui est bizarre c'est que arrivé à "done" , on dirait on sort de la boucle.
    Pourtant il n'y a aucun break ou autre instruction à l'intérieur de la boucle
    disant de ne pas boucler ?

    Je connaissais pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    done < $fichierParametrage
    J'essaierai pour voir si ça marche !

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    En fait, il n'y a aucune raison pour que le "set" interrompe la boucle. Il n'en sort pas avec ton exemple.

  5. #5
    Membre très actif
    Inscrit en
    Août 2006
    Messages
    160
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 160
    Par défaut
    En fait j'ai un programme principal parcourant un fichier et appellant des fonctions, je n'ai toujours pas trouvé pourquoi ; il s'arrêtait aprés la première ligne.

    J'ai bidouillé et j'ai trouvé une parade :
    Je possèdes maintenant deux scripts !
    Un script à exécuter qui parcours chaque ligne du fichier à traiter et pour chaque ligne il appelle une second script qui traite la ligne.

    C'est la seule façon que j'ai trouvé à force de chercher et cela marche parfaitement.

    Peut être ksh possède il des limitations dans les appels de fonctions ?

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Difficile à expliquer si tu ne fournis pas un exemple de script avec lequel le problème de sortie se produit.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 30/07/2012, 10h14
  2. [AC-2010] Calcul champ avec Coef dans autre table
    Par Mathieu51 dans le forum Access
    Réponses: 4
    Dernier message: 12/09/2011, 17h14
  3. Champs avec sauts de ligne
    Par hubsm dans le forum SQL*Loader
    Réponses: 0
    Dernier message: 26/06/2009, 11h42
  4. Réponses: 1
    Dernier message: 02/08/2008, 16h26
  5. Réponses: 4
    Dernier message: 12/07/2007, 08h56

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