p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Modérateur
    Avatar de N_BaH
    Inscrit en
    février 2008
    Messages
    3 888
    Détails du profil
    Informations forums :
    Inscription : février 2008
    Messages : 3 888
    Points : 9 808
    Points
    9 808

    Par défaut [SHELL] Comment lire/parcourir un fichier ?

    Si vous ne vouliez lire que la première ligne d'un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    read premiR_Ligne < fichier
    echo "$premiR_Ligne"
    le contenu de 'fichier' est redirigé vers la commande `read', qui va placer ce qu'elle a lu dans une variable "$premiR_Ligne"

    Pour lire tout le contenu du fichier, on utilisera une boucle `while' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while read Ligne
    do echo "$Ligne"
    done < fichier
    Il est possible de découper la ligne en autant de variables que nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while read champ1 champ2 toutLeReste
    do line="$champ1 $champ2 $toutLeReste"
       echo "$line"
    done < fichier
    Si vous avez besoin de découper la ligne en fonction du formatage d'un fichier (CSV, par exemple),
    vous modifierez l'environnement de la commande `read' en adaptant l'IFS (Internal Field Separator):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while IFS=';' read champ1 champ2 toutLeReste
    do line="$champ1 $champ2 $toutLeReste"
       echo "$line"
    done < fichier.csv
    vous pourriez utiliser un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while IFS=';' read -a Array
    do echo "${Arrray[@]}"
    done < fichier.csv
    ou les paramètres positionnels :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cat fichier.csv | while read Ligne
    do IFS=';'
       set -- $Ligne
       echo "$@"
    done
    l'IFS, et les paramètres positionnels du script sont conservés intacts, car le pipe crée un sous-shell en dehors duquel les variables créées (ou modifiées) n'existent pas.

  2. #2
    Membre chevronné
    Avatar de hornetbzz
    Homme Profil pro
    Directeur commercial
    Inscrit en
    octobre 2009
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : octobre 2009
    Messages : 482
    Points : 741
    Points
    741

    Par défaut

    une petite tipo: Arrray => Array

  3. #3
    Invité régulier
    Inscrit en
    mars 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : mars 2009
    Messages : 2
    Points : 5
    Points
    5

    Par défaut

    Awesome !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while IFS=';' read champ1 champ2 toutLeReste
    do line="$champ1 $champ2 $toutLeReste"
       echo "$line"
    done < fichier.csv
    C'est exactement ce dont j'avais besoin pour parser mon fstab

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Inscrit en
    février 2009
    Messages
    5 070
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant en SSII et ingénieur CNAM Paris (spécialité SI)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2009
    Messages : 5 070
    Points : 17 622
    Points
    17 622

    Par défaut

    Bonjour.

    Une nouvelle Q/R de la FAQ a été rédigée à partir de cette proposition : Comment lire/parcourir un fichier ?



    Idriss
    mes cours sur DVP | initiation aux bases de données relationnelles | FAQ Linux | FAQ tests
    la programmation Shell | bonnes pratiques Bash | exercices shells scripts & Bash corrigés
    Merci aussi de lire les règles du club

    "Forgiveness does not change the past, but it does enlarge the future." (Paul Boese)
    Traduction approximative : le pardon ne change pas le passé mais élargit l'horizon de l'avenir.

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

Discussions similaires

  1. Comment lire dans un fichier xml en j2me
    Par sebac dans le forum Java ME
    Réponses: 2
    Dernier message: 01/01/2009, 19h56
  2. Lire / parcourir un fichier plat en VBA
    Par KuBi4K dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/06/2007, 14h41
  3. Comment lire un grand fichier
    Par hello05 dans le forum MATLAB
    Réponses: 11
    Dernier message: 27/04/2007, 10h23
  4. Comment lire dans un fichier XML?
    Par yosthegost dans le forum Delphi
    Réponses: 5
    Dernier message: 29/05/2006, 17h50
  5. [C#] Comment lire/ecrire dans fichier ini ?
    Par meli0207 dans le forum C#
    Réponses: 2
    Dernier message: 20/03/2006, 16h53

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