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

Linux Discussion :

[SHELL sh] - Problème avec while read -> espace de debut tronque


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 145
    Points : 61
    Points
    61
    Par défaut [SHELL sh] - Problème avec while read -> espace de debut tronque
    Bonjour,

    J'ai un problème lorsque je fais une lecture de fichier avec la boucle while read.
    Dans le fichier txt j'ai par ex (ou x est le caractère espace):
    xxxxxxCOL1 COL2
    xxxxxxCOL1 COL2
    Lorsque j'affiche la ligne avec la variable ${Ligne}, il me tronque les espaces. Alors qu'au contraire je souhaiterais garder les espaces, car ensuite je fais des cut sur chaque ligne du fichier.

    Voici le code que j'ai actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    cat -s $nomfichier | while read Ligne
    do
    .......
    echo "${Ligne}"
    ......
    done
    Apparemment d'après les infos que j'ai pu obtenir la solution serait d’éviter d'utiliser la commande read, mais de mettre le contenu du fichier dans une variable. Puis il faudrait effectuer un while sur la variable.

    La ou le problème coince c'est que je n'arrive pas à réaliser la 2ème solution.

    Pourriez vous m'aider à trouver la solution?

    Merci d'avance.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    Apparemment d'après les infos que j'ai pu obtenir
    tu vas pouvoir copieusement remonter les bretelles de tes sources !

    Il y a plusieurs solutions, notamment, redéfinir l'IFS (Internal Field Separator) pour la commande interne read
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while IFS="" read line; do echo "$line"; done <"$nomfichier"
       COL1 COL2
       COL1 COL2
    Alors qu'au contraire je souhaiterais garder les espaces, car ensuite je fais des cut sur chaque ligne du fichier.
    ce n'est pas indispensable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while read col1 col2; do echo $col1; done <"$nomfichier"
    COL1
    COL1
    ...
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 145
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse.

    J'ai ajouter la variable IFS et ça marche. Les espaces ne sont plus tronqué par read.

    Merci encore

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

Discussions similaires

  1. [MySQL] problème avec while
    Par scastong dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 28/02/2008, 20h42
  2. Problème avec l'affichage d'espace
    Par maloups dans le forum JSF
    Réponses: 7
    Dernier message: 07/01/2008, 12h57
  3. [MySQL] problème avec while
    Par dudu134 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/11/2007, 08h51
  4. [MySQL] Problème avec while
    Par Whinze dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/06/2007, 17h33
  5. [Tableaux] problème avec while
    Par zimotep dans le forum Langage
    Réponses: 3
    Dernier message: 11/09/2005, 10h30

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