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 de lignes consécutives fichier csv


Sujet :

Shell et commandes GNU

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Oui , ne s'affichent que les lignes qui remplissent les conditions car elles sont traitées (changement de champs ) .
    Par contre pour les lignes qui ne respectent pas les conditions , un simple print , c'est pourquoi j'ai fait un print dans le premier if .

    Que veux-tu dire par sortir le print de la condition ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Code pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
    if <tes_conditions>{$0=<tes_champs>}; print $0
    le dernier $0 est facultatif, je l'ai mis pour expliciter le "code".
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Je suis un perdu là

    Quand tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if <tes_conditions>{$0=<tes_champs>}; print $0
    Le $0 ne représente pas la ligne en cours ? car la modification se porte sur la ligne précédente qui est sauvegardé dans le tableau l_i .

    Si je reprend tout le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    awk -F';' 'BEGIN {OFS=";"} {if(FNR==1)
    {ligne_i=$0;}
    else{n=split(ligne_i,l_i,";");     
    if (l_i[5] == $5 && l_i[4] == 1 && $4 == 3 && l_i[7] == $7)  
    print l_i[1] ,l_i[2] ,l_i[3] ,l_i[4] ,l_i[5] ,l_i[6] ,l_i[8] ,l_i[7] , l_i[9];     
    ligne_i=$0} print $0 }'
    monfichier > monfichiertraite
    dans mon fichier traité , j'ai toutes les lignes du fichier initial plus le quelques lignes traitées ..
    Les lignes traitées se trouvent ainsi en doublons ( format initial + traité ) . alors que j'ai besoin que du format traité

    Merci de votre aide

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    awk -F';' 'BEGIN {OFS=";"}
    {
       ligne_i=$0;
       if(FNR > 1){
          n=split(ligne_i,l_i,";");
          if (l_i[5] == $5 && l_i[4] == 1 && $4 == 3 && l_i[7] == $7){
             $0 = l_i[1]";"l_i[2]";"l_i[3]";"l_i[4]";"l_i[5]";"l_i[6]";"l_i[8]";"l_i[7]";"l_i[9];
          }
          print $0
       }
    }' monfichier > monfichiertraite
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #25
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    N Bah
    Le dernier code ne donne rien , en sortie , c'est une copie du fichier initial sans la première ligne (FNR > 1 )
    Il n'y a pas de traitement pour les lignes qui remplissent les conditions ..


  6. #26
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Pour retrouver la première ligne, c'est encore la même chose: sors le "print $0" de la condition.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  7. #27
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Bonjour,
    En fait c'est normal, il y a juste eu un oublie algorithmique:
    -Si ligne 1 alors ligne_i=$0
    -Sinon, on traite la ligne_i selon la ligne suivante (donc $0) et on affiche ligne_i dans l'ordre voulu
    -Puis ligne_i devient la ligne courante (donc $0) puis on passe à la ligne suivante,...

    Ici, tu as zapper la sauvegarde de la ligne courante avant le passage de la ligne suivante et en plus tu détruis ta ligne courante en réaffectant $0...

    Le plus simple dans ton cas, était de garder ta première version et de passer par un else:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    awk -F';' 'BEGIN {OFS=";"} {if(FNR==1)
    {ligne_i=$0;print $0}
    else{n=split(ligne_i,l_i,";");     
    if (l_i[5] == $5 && l_i[4] == 1 && $4 == 3 && l_i[7] == $7)  
    print l_i[1] ,l_i[2] ,l_i[3] ,l_i[4] ,l_i[5] ,l_i[6] ,l_i[8] ,l_i[7] , l_i[9]
    else
    print l_i[1], l_i[2], l_i[3], l_i[4], l_i[5], l_i[6], l_i[7], l_i[8] , l_i[9];     
    ligne_i=$0}}'
    monfichier > monfichiertraite
    Attention, le code ci-dessus n'est pas testé, il peut donc y avoir des erreurs de syntaxe à réajuster...
    Cordialement.

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    en sortant le print $0 de la condition , je retrouve bien ma première ligne ; Merci pour cela ,
    Par contre le fichier temporaire est exactement le même que le fichier initial , il ne traite pas les lignes concernées .. Bizzare alors que les conditions sont bien là ..

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    Code script.awk : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/usr/bin/awk -f
    BEGIN {FS=OFS=";"}
    {
       if(FNR > 1){
          n=split(ligne_i,l_i,";");     
          if (l_i[4] == 1 && $4 == 3 && l_i[5] == $5 && l_i[7] == $7){
             $0 = ">> "l_i[1]";"l_i[2]";"l_i[3]";"l_i[4]";"l_i[5]";"l_i[6]";"l_i[8]";"l_i[7]";"l_i[9];
          }
       print $0
       ligne_i=$0;
       }
    }
    Code tonFichier : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    6305642J;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    6305688J;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    6305691M;IU4;MT201403;1;IU4;5,57;5,57;0;correct
    6305718S;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    6305740R;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    6305794Z;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    6305928V;IU4;MT201403;1;IU4;7,42;2,39;-5,03;correct sortant
    6305928V;IU4;MT201403;3;IU4;-5,02;2,39;7,41;correct sortant
    6305979A;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ ./script.awk tonFchier
    6305688J;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    6305691M;IU4;MT201403;1;IU4;5,57;5,57;0;correct
    6305718S;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    6305740R;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    6305794Z;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    6305928V;IU4;MT201403;1;IU4;7,42;2,39;-5,03;correct sortant
    >> 6305928V;IU4;MT201403;1;IU4;7,42;-5,03;2,39;correct sortant
    6305979A;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #30
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    @ disedorgue

    Le code est bon avec les bonnes syntaxes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    awk -F';' 'BEGIN {OFS=";"} {if(FNR==1)
    {ligne_i=$0;print $0}
    else{n=split(ligne_i,l_i,";");     
    if (l_i[5] == $5 && l_i[4] == 1 && $4 == 3 && l_i[7] == $7)  {
    print l_i[1] ,l_i[2] ,l_i[3] ,l_i[4] ,l_i[5] ,l_i[6] ,l_i[8] ,l_i[7] , l_i[9]}
    else {
    print l_i[1], l_i[2], l_i[3], l_i[4], l_i[5], l_i[6], l_i[7], l_i[8] , l_i[9];   }  
    ligne_i=$0}}'
    monfichier > monfichiertraite
    Par contre j'ai toutes les lignes sauf la dernière , saurais-tu pourquoi ?

    @ N baH ,
    Je pense que certains champs de la ligne courante est sont remplacées par les champs de la ligne précédente
    Exemple 8e ligne
    code monfichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    305928V;IU4;MT201403;3;IU4;-5,02;2,39;7,41;correct sortant
    et codemonfichiertraite après ton script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    >> 6305928V;IU4;MT201403;1;IU4;7,42;-5,03;2,39;correct sortant
    la 4e valeur est passée de 1 à 3 ..

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    le tableau l_i contient la ligne précédente, si tu veux modifier et afficher la ligne courante utilise les numéros de champs par défaut : $1,$2,...

    tu peux nous montrer avant, après (en gras) le fichier ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  12. #32
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    @ N_BaH
    Oui , le tableau l_i contient la ligne précédente . Et je veux modifier cette ligne en permutant deux champs
    recapitulons , voici le script awk

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/bin/awk -f
    BEGIN {FS=OFS=";"}
    {
       if(FNR > 1){
          n=split(ligne_i,l_i,";");
          if (l_i[5] == $5 && l_i[4] == 1 && $4 == 3 && l_i[7] == $7){
             $0= ">> "l_i[1]";"l_i[2]";"l_i[3]";"l_i[4]";"l_i[5]";"l_i[6]";"l_i[8]";"l_i[7]";"l_i[9];
          }
       print $0
       ligne_i=$0;
       }
    }
    monfichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    5008804C;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5011034B;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012170L;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012317W;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5105815Z;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5109188R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5112401H;IU4;MT201403;1;IU4;8,45;8,45;0;correct
    5208042R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208332F;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208663R;IU4;MT201403;1;IU4;12,91;1,67;-11,24;correct sortant
    5208663R;IU4;MT201403;3;IU4;-11,24;1,67;12,91;correct sortant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ./script.awk monfichier 
    5011034B;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012170L;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012317W;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5105815Z;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5109188R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5112401H;IU4;MT201403;1;IU4;8,45;8,45;0;correct
    5208042R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208332F;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208663R;IU4;MT201403;1;IU4;12,91;1,67;-11,24;correct sortant
    >> 5208663R;IU4;MT201403;1;IU4;12,91;-11,24;1,67;correct sortant
    5208891N;IU4;MT201403;1;IU4;6,64;6,64;0;correct
    Dans ce fichier de sortie , il modifie la 2e ligne qui est la ligne courante et prend les valeurs de la ligne précédente ..

    la ligne qui est en gras doit être traitée pour avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    5208663R;IU4;MT201403;1;IU4;12,91;-11,24;1,67;correct sortant
    J'espere avoir été clair

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    non, je demande le fichier avant/après (en gras) le traitement que tu souhaites effectuer, pour que l'on sache à quoi doit ressembler notre sortie.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #34
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Fichier en entrée (en gras : 2 lignes qui verifient les conditions )

    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
    5008804C;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5011034B;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012170L;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012317W;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5105815Z;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5109188R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5112401H;IU4;MT201403;1;IU4;8,45;8,45;0;correct
    5208042R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208332F;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208663R;IU4;MT201403;1;IU4;12,91;1,67;-11,24;correct sortant
    5208663R;IU4;MT201403;3;IU4;-11,24;1,67;12,91;correct sortant
    5208891N;IU4;MT201403;1;IU4;6,64;6,64;0;correct
    5209733D;IU4;MT201403;1;IU4;2,71;2,71;0;correct
    5209792T;IU4;MT201403;1;IU4;10,28;10,28;0;correct

    Après traitement (en gras : ligne modifiée )
    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
    5008804C;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5011034B;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012170L;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012317W;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5105815Z;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5109188R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5112401H;IU4;MT201403;1;IU4;8,45;8,45;0;correct
    5208042R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208332F;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208663R;IU4;MT201403;1;IU4;12,91;-11,24;1,67;correct sortant
    5208663R;IU4;MT201403;3;IU4;-11,24;1,67;12,91;correct sortant
    5208891N;IU4;MT201403;1;IU4;6,64;6,64;0;correct
    5209733D;IU4;MT201403;1;IU4;2,71;2,71;0;correct
    5209792T;IU4;MT201403;1;IU4;10,28;10,28;0;correct
    et maintenant ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    un p'tit coup de baguette magique ANSI, et hop :
    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
    $ cat tonFichier
    5008804C;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5011034B;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012170L;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012317W;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5105815Z;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5109188R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5112401H;IU4;MT201403;1;IU4;8,45;8,45;0;correct
    5208042R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208332F;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208663R;IU4;MT201403;1;IU4;12,91;1,67;-11,24;correct sortant
    5208663R;IU4;MT201403;3;IU4;-11,24;1,67;12,91;correct sortant
    5208891N;IU4;MT201403;1;IU4;6,64;6,64;0;correct
    5209733D;IU4;MT201403;1;IU4;2,71;2,71;0;correct
    5209792T;IU4;MT201403;1;IU4;10,28;10,28;0;correct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/usr/bin/awk -f
    BEGIN {FS=OFS=";"}
    {
       if(FNR > 1){
          n=split(ligne_i,l_i,";");     
          if (l_i[4] == 1 && $4 == 3 && l_i[5] == $5 && l_i[7] == $7){
              print "^[[F^[[K"l_i[1]";"l_i[2]";"l_i[3]";"l_i[4]";"l_i[5]";"l_i[6]";"l_i[8]";"l_i[7]";"l_i[9]; # dans vim, pour obtenir le code d'échappement ^[, il faut taper Ctrl-V Ctrl-AltGr-[
          }
       ligne_i=$0;
       }
       print $0
    }
    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
    $ script.awk tonFichier
    5008804C;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5011034B;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012170L;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012317W;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5105815Z;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5109188R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5112401H;IU4;MT201403;1;IU4;8,45;8,45;0;correct
    5208042R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208332F;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208663R;IU4;MT201403;1;IU4;12,91;-11,24;1,67;correct sortant
    5208663R;IU4;MT201403;3;IU4;-11,24;1,67;12,91;correct sortant
    5208891N;IU4;MT201403;1;IU4;6,64;6,64;0;correct
    5209733D;IU4;MT201403;1;IU4;2,71;2,71;0;correct
    5209792T;IU4;MT201403;1;IU4;10,28;10,28;0;correct
    non mais !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  16. #36
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    @ N BaH , en utilisant ton script
    j'ai ça en sortie

    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
     
    5008804C;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5011034B;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012170L;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5012317W;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5105815Z;IU4;MT201403;1;IU4;2,44;2,44;0;correct
    5109188R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5112401H;IU4;MT201403;1;IU4;8,45;8,45;0;correct
    5208042R;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208332F;IU4;MT201403;1;IU4;7,42;7,42;0;correct
    5208663R;IU4;MT201403;1;IU4;12,91;1,67;-11,24;correct sortant
    ^[[F^[[K5208663R;IU4;MT201403;1;IU4;12,91;-11,24;1,67;correct sortant
    5208663R;IU4;MT201403;3;IU4;-11,24;1,67;12,91;correct sortant
    5208891N;IU4;MT201403;1;IU4;6,64;6,64;0;correct
    5209733D;IU4;MT201403;1;IU4;2,71;2,71;0;correct
    5209792T;IU4;MT201403;1;IU4;10,28;10,28;0;correct
    Que veux-tu dire par code d'echappement ?
    Je suis sous vi

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    cherche «ANSI escape codes».
    malheureusement, la magie ne supporte un examen poussé, donc, je suggère l'emploi d'un tableau (encore) qui stockera les données à afficher, ce qui permettra lorsque les conditions sont remplies de réécrire la valeur de l'item précédent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/awk -f
    BEGIN {FS=OFS=";"}
    {
       if(FNR > 1){
          n=split(ligne_i,l_i,";");     
          if (l_i[4] == 1 && $4 == 3 && l_i[5] == $5 && l_i[7] == $7){
              aff[FNR-1] = l_i[1]";"l_i[2]";"l_i[3]";"l_i[4]";"l_i[5]";"l_i[6]";"l_i[8]";"l_i[7]";"l_i[9];
          }
       ligne_i=$0;
       }
       aff[FNR]=$0
    }
    END{for(i=1;i<=FNR;i++)print aff[i]}
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  18. #38
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Je cherche ça .
    @N BaH , MERCI

  19. #39
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Voici le bout de code toujours basé sur l'ancienne version qui devrait fonctionner:
    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
    #!/usr/bin/awk -f
    BEGIN {FS=";";OFS=";"}
    {
    	if(FNR==1){
    		ligne_i=$0;print $0
    	}
    	else{
    		n=split(ligne_i,l_i,";");     
    		if (l_i[4] == 1 && $4 == 3 && l_i[5] == $5 && l_i[7] == $7){  
    			print l_i[1] ,l_i[2] ,l_i[3] ,l_i[4] ,l_i[5] ,l_i[6] ,l_i[8] ,l_i[7] , l_i[9]
    		}
    		else {
    			print ligne_i ; #ici simplifier car ligne_i contient la tout l_i en fait
    		}
    		ligne_i=$0
    	}
    }
    END{print $0} # Pour la dernière ligne
    Cordialement.

  20. #40
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 23
    Points : 5
    Points
    5
    Par défaut
    Merci @disedorgue !

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Saut de ligne dans fichier CSV
    Par pausg dans le forum Langage
    Réponses: 15
    Dernier message: 29/07/2011, 16h27
  2. Réponses: 18
    Dernier message: 24/06/2011, 15h13
  3. [AC-2000] Suppression lignes sur fichier CSV depuis Access
    Par electronedf dans le forum VBA Access
    Réponses: 8
    Dernier message: 25/10/2010, 13h35
  4. Compter les lignes du fichier CSV
    Par miniRoshan dans le forum Général Java
    Réponses: 5
    Dernier message: 28/05/2010, 11h37
  5. [CSV] Traitement d'un gros fichier CSV
    Par Adrinou dans le forum Langage
    Réponses: 6
    Dernier message: 09/10/2007, 12h40

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