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 :

[ksh] Boucle sur le premier élément de chaque ligne d'un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Points : 10
    Points
    10
    Par défaut [ksh] Boucle sur le premier élément de chaque ligne d'un fichier
    Bonjour !

    Voilà, j'ai un fichier contenant :

    074 Paris
    142 Bourges
    191 Mulhouse
    161 Nice

    Dans mon script, je souhaiterais boucler sur les nombres de chaque ligne.
    En d'autre terme, une boucle qui récupère le nombre de chaque ligne (074 par exemple), le stocke dans une variable, je fais mon traitement et la boucle passe à la deuxième ligne ect ect.

    J'ai un peu de mal avec ksh si quelqu'un pouvait m'aider

    Merci d'avance

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 111
    Points : 28 451
    Points
    28 451
    Par défaut
    une simple boucle read, si tu n'as pas besoin du reste de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read nb
    do
     echo ${nb}
    done < monfichier

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    ca me resort les lignes entières et sans la dernière :

    074 Paris
    142 Bourges
    191 Mulhouse


    Moi j'aimerais ça :

    074
    142
    191
    161


  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 111
    Points : 28 451
    Points
    28 451
    Par défaut
    J'ai répondu un peu vite . il faut au moins deux variables pour que read fasse le découpage des champs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cat monfichier | while read nb xy
    do
     echo ${nb}
    done

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Super

    Par contre, ca me retourne pas la dernière ligne. En rajoutant une ligne vide en fin de fichier le problème est résolu mais étant perfectionniste je me demandais s'il était possible de le faire proprement ?

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    La ligne vide, c'est obligatoire pour read car en l'absence de caractère de saut de ligne sur "161 Nice", read ne sait pas qu'il faut qu'il lise. Essaie voir comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while read LINE
    do
     echo $LINE | read nb xy
     echo ${nb}
    done < monfichier
    Le echo $LINE devrait rajouter ce qu'il manque.

    Ce qui est assez étrange c'est que j'ai fait un test sous Solaris et la méthode d'al1_24 marche très bien, j'ai bien toutes les lignes

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    J'ai compris le problème et testé ta soluce mais non ca veut pas

    On tente une dernière solution et après je passerais ce post en résolu

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Plutôt étrange. C'est un fichier créé sous Unix ou sous Windows ?

  9. #9
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Oh !!! Je viens de trouver une méga gruge (au moins, sous Solaris) : le - en paramètre de cat !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo "" | cat monfichier - | while read nb xy
    do
     echo ${nb}
    done

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Points : 10
    Points
    10
    Par défaut


    Merci beaucoup

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

Discussions similaires

  1. Menu avec hover sous ie6 sur le premier élément de la liste
    Par fabight dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 24/05/2008, 13h37
  2. Réponses: 2
    Dernier message: 07/03/2007, 16h30
  3. Réponses: 4
    Dernier message: 13/02/2007, 16h40
  4. Réponses: 3
    Dernier message: 06/10/2006, 14h55
  5. Réponses: 2
    Dernier message: 11/01/2005, 14h10

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