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 :

Traitement d'un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Par défaut Traitement d'un fichier
    Bonjour, à tous,

    J'ai un fichier qui est monté comme cela :

    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
    MAGASIN :101  R'ception des Op'rations au 
                         bobon.                     tv                     Heures
                    Emis          Recus        Emis         Recus        Emis         Recus
    Enregistrements  0             0            0            0            0            0
    Compteur 1       0             0            0            0            0            0
    Compteur 2       0             0            0            0            0            0
    Encaissement     0             0
    Decaissement     0             0
     
     
    MAGASIN :102  R'ception des Op'rations au 171110
                         bobon.                     tv                     Heures
                    Emis          Recus        Emis         Recus        Emis         Recus
    Enregistrements  0             0            1            1            0            0
    Compteur 1       0             0            420902       510902       0            0
    Compteur 2       0             0            7            7            0            0
    Encaissement     0             0
    Decaissement     0             0
    etc.....
    Je voudrais pouvoir faire un test sur les champs et si ceux ci ne sont pas égaux envoyer le bloc dans un autre fichier.

    En gros, la je recupererais dans un autre fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MAGASIN :102  R'ception des Op'rations au 171110
                         bobon.                     tv                     Heures
                    Emis          Recus        Emis         Recus        Emis         Recus
    Enregistrements  0             0            1            1            0            0
    Compteur 1       0             0            420902       510902       0            0
    Compteur 2       0             0            7            7            0            0
    Encaissement     0             0
    Decaissement     0             0
    Est ce possible et surtout comment s'y prendre ?

    Merci d'avance pour votre aide.

    Amicalement
    Steph70

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Tu compares des pommes et des poires ? MAGASIN :101 et MAGASIN: 102
    Tu n'as pas d'heure sur MAGASIN: 102 alors que sur 101 oui
    Tu as combien de bloc dans un fichier ? Ou commence et ou s'arrête un bloc ?
    Si les blocs sont différents, tu le récupère dans un fichier : Un seul ? Lequel ? les deux

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Par défaut
    Tout d'abord merci pour ton intérêt

    Les blocs commencent à "MAGXXXX" et s'arrete à la ligne vide.

    Exemple de bloc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MAGASIN :101  R'ception des Op'rations au 
                         bobon.                     tv                     Heures
                    Emis          Recus        Emis         Recus        Emis         Recus
    Enregistrements  0             0            0            0            0            0
    Compteur 1       0             0            0            0            0            0
    Compteur 2       0             0            0            0            0            0
    Encaissement     0             0
    Decaissement     0             0
    Le test se fait à l'interieur d'un bloc entre les colonnes emis et reçus sur chaque ligne

    Si emis et reçus sont différents, je souhaiterais que le bloc en entier soit renvoyer dans un autre fichier pour une lecture plus simple et plus courte.

    Si il y a plusieurs blocs comprenant des différences, ils sont renvoyés dans le même fichier.

    Il y a environ un 50 aines de bloc dans le fichier.

    Merci de ton aide
    Amicalement
    Steph70

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Tu compares MAGASIN101 à quoi ? à d'autre MAGASIN101 ?
    A tous les enregistrement ?
    Les numéro Magasin se suivent ? ne se suivent pas ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 145
    Par défaut
    Je compare l'interieur du bloc "MAGXXX" entre les émis et les reçus.

    Par exemple dans le bloc "MAGASIN : 101" je verifie que les chiffres de la colonne "emis" soient equivalent aux chiffres de la colonne "reçus". Si ce n'est pas le cas, j'envoi tout le bloc dans un autre fichier et je passe au "MAGASIN : 102" et je lui attribue le même traitement, etc

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MAGASIN :102  R'ception des Op'rations au 171110
                         bobon.                     tv                     Heures
                    Emis          Recus        Emis         Recus        Emis         Recus
    Enregistrements  0             0            1            1            0            0
    Compteur 1       0             0            420902       510902       0            0
    Compteur 2       0             0            7            7            0            0
    Encaissement     0             0
    Decaissement     0             0
    Ici , l'emis et le recus de la ligne Compteur 2 ne sont equivalent, donc je prend tous le bloc et je l'envoi dans un autre fichier

    Les numéros de magasin ne se suivent pas forcement

    Amicalement
    Steph70

  6. #6
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    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
     
    {
            if ( $0 ~ /.*MAGASIN.*/ )
            {
                    MAG=$0
                    TOSAVE=0
                    RECORD=" "
     
                    for ( ; length($0) > 1  ; getline )
                    {
                      RECORD=RECORD"\n"$0
                            if  ( (  ( $0 ~ /enregistrement/ ) || ( $0 ~ /compteur/ ) || ( $0 ~ /caissement/ )  ) &&  ( (  $2 != $3 ) || ( $4 != $5 ) || ( $6 != $7 ) ) )
     
     
                            {
     
                                    TOSAVE=1
                            }
                    }
                    if ( TOSAVE == 1 )
                    {
                            print RECORD
                    }
            }
    }

Discussions similaires

  1. Traitement de gros fichiers
    Par Seth77 dans le forum Langage
    Réponses: 2
    Dernier message: 27/06/2006, 15h53
  2. Java et XML : Traitement d'un fichier XML avec JAVA
    Par nice dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 18/05/2006, 21h24
  3. [INFO] Traitement d'un fichier texte
    Par doudine dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 25/04/2006, 09h23
  4. [VBA-E]Traitement d'un fichier excel
    Par climz dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/04/2006, 14h28
  5. [C#] [XML] Traitement de gros fichiers XML (90 Mo)
    Par Pulsahr dans le forum Windows Forms
    Réponses: 20
    Dernier message: 01/12/2005, 14h40

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