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 :

Shell Parser fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Par défaut Shell Parser fichier
    Bonsoir à tous,

    Voilà depuis quelques heures que je cherche désespérément à savoir comment parser un fichier via en script ksh.

    Mon fichier d'entrée est le suivant :

    ++
    CATEGORIE 1

    ==
    Sous catégorie 1

    aaa
    bbb
    cc

    ==
    Sous catégorie 2

    dd
    ffff
    yyy

    ++
    CATEGORIE 2
    ...
    J'aimerai donc bien pouvoir récupérer les différentes parties de mon fichiers.

    Exemple Catégorie1= CATEGORIE1
    ss_catgorie1=aaa
    bbb
    ccc

    etc...
    Je viens donc quémander votre aide cher développeur.

    En vous remerciant,

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    comment parser un fichier via en script ksh
    de la même manière qu'en bash probablement; regarde ici...

    Après, ton plus gros problème est de décider quelle action effectuer selon que la ligne lue vaut tant ou tant.

    tu as peut-être déjà pensé à quelque chose
    ...
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Par défaut
    Bonjour N_BaH,

    J'avais bien vu ton post, mais mon problème vient du fait qu'il n'est pas obligatoire que j'aie de sous catégories dans mon fichier :/
    Peut-être faut-il penser à un autre manière de délimiter mes fichiers?

    Effectivement, j'ai pensé à l'utilisation du awk.
    Je décompose mes CATEGORIE en plusieurs fichiers via la commande :

    file='categorie.log'
    awk '/^"++"/{close f; f=""} f{print > f} /^"++"/{f="doc."++d}' ${file}
    Sauf que cette commande ne fonctionne pas avec des caractères spéciaux que j'ai choisi pour délimiter mes catégories (++) . En effet, avec un BEGIN - END à la fin de chaque CATEGORIE cela pourrait fonctionner.

    Ma question : Cela pourrait-il fonctionner avec caractères spéciaux?

    Merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/usr/bin/ksh
     
    while read line
    do [ "$line" = "++" ] && output="doc.$((++n))"
       echo "$line" >> "$output"
    done < ton_fichier.log
    cela pourrait-il être tout ce que tu demandes ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 83
    Par défaut
    Bonsoir N_BaH,

    Effectivement, cela pourrait coller, comme quoi il ne fallait pas chercher trop loin.
    Afin de faciliter le parsing du fichier j'ai décidé de modifier le contenu du fichier

    ++ categorie 1
    aa bb cc
    aa bb cc

    ++categorie 2
    = sous categorie 21
    aa aa
    bb bb

    = sous categorie 22
    cc dd
    Je te fais part de l'algorithme général que je compte apporter grâce à ton aide:

    1 - Découpe du fichier log en plusieurs doc.* correspondant aux catégories
    2 - parcourir chaque doc.* pour en extraire les variables.
    a. pour tous les fichiers doc.* lecture ligne à ligne
    b. si deux premiers caractères = "++" alors v_CATEGORIE=ligne
    c. si deux premiers caractères = "=" alors v_SS_CATEGORIE=ligne
    d. sinon cela correspond au données

    ce qui donne pour l'instant :

    while read line
    do [ "${line:0:2}" = "++" ] && output="doc.$((++n))"
    echo "$line" >> "$output"
    done < monfichier.log




    j=0
    k=0
    while read line
    do
    if [ "${line:0:2}" = "++" ] ; then
    data=""
    varsc=""
    k=0
    let j=$j+1
    typeset categorie$j="$line"


    elif [ "${line:0:1}" = "=" ] ; then
    data=""
    let k=$k+1
    varsc=$j"_"$k
    typeset sscategorie${varsc}="$line"

    elif [ "${line:0:3}" != "" ] ; then
    typeset data="$data""$line
    "
    if [ "$varsc" = "" ];then
    typeset "data$j"="$data"
    else
    typeset "data$varsc"="$data"
    fi

    fi

    done < monfichier.log
    Peut-être que cette méthode est trop brouillon ?

    Dans l'attente de ton avis sur le sujet,

    Merci d'avance !

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    c'est typeset pour déclarer des variables, et pas set

    J'aimerais bien savoir ce qui se passe en amont : le script qui produit ce log
    et pourquoi tu dois retraiter le log, plutôt que d'avoir un log dans le format que tu veux...

    d'ailleurs, quel est exactement le format voulu ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

Discussions similaires

  1. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01
  2. Réponses: 7
    Dernier message: 30/05/2006, 14h08
  3. parser fichier texte pour avoir un doc html !!
    Par avogadro dans le forum Débuter
    Réponses: 4
    Dernier message: 30/03/2006, 16h12
  4. [XML] [EXPAT] Parser fichier XML
    Par Ben42 dans le forum Bibliothèques et frameworks
    Réponses: 12
    Dernier message: 17/02/2006, 14h08
  5. [XSL] Parser fichier xml : erreurs + incompréhensions
    Par totobouchon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 19/07/2005, 15h47

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