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 script] parser un fichier en colonne


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut [shell script] parser un fichier en colonne
    Bonjour,

    Dans un script je parse un fichier texte a plat et affiche sont contenu à l'écran.
    Le problème c'est que tous s'affiche sur une colonne. J'aimerai savoir comment faire afficher sur plusieurs colonnes. Est ce possible?

    Merci.

  2. #2
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par Blo0d4x3
    Bonjour,

    Dans un script je parse un fichier texte a plat et affiche sont contenu à l'écran.
    Le problème c'est que tous s'affiche sur une colonne. J'aimerai savoir comment faire afficher sur plusieurs colonnes. Est ce possible?

    Merci.

    Un extrait du fichier en entrée et de la sortie souhaitée serait un plus

  3. #3
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    ok, voici une partie du fichier en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    script1
    script2
    script3
    ...
     
    script25
    Sur la console le script va m'afficher ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    script1
    script2
    script3
    script4
    ...
    script25
    Moi ce que je voudrais c'est qu'il m'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    script1         script5     script9
    script2         script6     ...
    script3         script7
    script4         script8

  4. #4
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par Blo0d4x3
    ok, voici une partie du fichier en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    script1
    script2
    script3
    ...
     
    script25
    Sur la console le script va m'afficher ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    script1
    script2
    script3
    script4
    ...
    script25
    Moi ce que je voudrais c'est qu'il m'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    script1         script5     script9
    script2         script6     ...
    script3         script7
    script4         script8

    Un script bash qui fait ce que tu veux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    declare -a TabLine
    typeset -i NbrRec=0
    typeset -i SizeCol
    typeset Col1=0
    typeset Col2
    typeset Col3
     
    #
    ### Mise en table des enreg. du fichier toto.txt
    ### Nota : l'indice commence à zéro.
    #
    while read line ; do
    	TabLine[$NbrRec]=$line
    	((NbrRec=$NbrRec+1))
    done < toto.txt
     
    ((SizeCol=$NbrRec/3))
    ((modulo=$NbrRec%3))
    [[ $modulo -ne 0 ]] && ((SizeCol=$SizeCol+1))
    ((Col2=$SizeCol))
    ((Col3=$SizeCol*2))
     
    #
    ### Affichage sous forme de 3 colonnes
    #
    while [[ $IndLine -lt $SizeCol ]] ; do
    	printf %-15s\\t%-15s\\t%-15s\\n ${TabLine[$Col1]} ${TabLine[$Col2]} ${TabLine[$Col3]}
    	((IndLine=$IndLine+1))
    	((Col1=$Col1+1))
    	((Col2=$Col2+1))
    	((Col3=$Col3+1))
    done

  5. #5
    Membre éclairé
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    593
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 593
    Par défaut
    Merci :-).

    J'ai adapter un peu et ca ne marche pas et j'aurai quelque questions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    function list()
    {
     
     typeset -i NB_RECORD=0
     typeset -i SIZECOL
     declare -a TabLine
     typeset Col1=0
     typeset Col2
     typeset Col3
     
     printf "$BLUE Liste des scripts disponibles: $NORMAL\n\n"
     
     cat $FICH_REF | egrep "^[^#][^#]*" | while read script over
     do
       TabLine[$NB_RECORD]=$script
       ((NB_RECORD=$NB_RECORD+1))
     
       printf "record: $NB_RECORD\n"
     done
     
     printf "record: $NB_RECORD\n"
     
     ...
    Dans le premier printf "$NB_RECORD" dans le while, la variable s'incrémente bien. Mais une fois sortie du while, la variable $NB_RECORD vaut 0 !
    Et forcement le déroulement du script s'effectue mal a cause de ca.

  6. #6
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par Blo0d4x3
    Merci :-).

    J'ai adapter un peu et ca ne marche pas et j'aurai quelque questions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function list()
    {
        .../...
        typeset -i NB_RECORD=0
        ((NB_RECORD=$NB_RECORD+1))
        .../...
        printf "record: $NB_RECORD\n"
      .../...
    }
     
    printf "record: $NB_RECORD\n"
     ...

    Faire "typeset -i NB_RECORD=0" dans une fonction déclare la variable NB_RECORD locale à la fonction.

    Solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    .../...
    typeset -i NB_RECORD=0
    
    function list()
    {
        .../...
        NB_RECORD=0
        ((NB_RECORD=$NB_RECORD+1))
        .../...
        printf "record: $NB_RECORD\n"
      .../...
    }
    printf "record: $NB_RECORD\n"
    Nota : ce serait sympa de ta part de mettre en ligne ton script d'affichage amélioré

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

Discussions similaires

  1. Shell script archivage vieux fichiers .log
    Par LuffyyffuL dans le forum Linux
    Réponses: 2
    Dernier message: 31/12/2011, 12h39
  2. Script shell pour parser un fichier txt
    Par pcsystemd dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 30/09/2008, 09h32
  3. Traitement de fichier en shell script
    Par sam.fet dans le forum Linux
    Réponses: 3
    Dernier message: 03/05/2006, 14h30
  4. Script shell - écriture dans un fichier
    Par Leishmaniose dans le forum Linux
    Réponses: 6
    Dernier message: 13/12/2004, 22h48
  5. Parser une chaine en shell script
    Par Gogoye dans le forum Linux
    Réponses: 10
    Dernier message: 19/07/2004, 17h49

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