Forum Programmation.perl faire le tri dans un fichier

Posté par . Licence CC by-sa
Tags : aucun
-2
3
août
2015

salut a tous j'aimerai effectuer un tri dans un fichier et j'aimerai que celui ci me retourne les juste les noms d'ou "false" se trouve en dessus.
a savoir
ame_a
ame_m
ame_f
en_affi

------------------------------------DATA.csv-----------------------------------------------

                2015.07.23  16:47:23
                              false,    false,       true,      false,    true,    false,
                      defau,  ame_a,    ame_m,       ame_uc,     ame_f,    ams_l,  en_affi,
                true  DPA01,  fault,    fault,       fault,      fault,    fault,      1,
                false DPA02,       ,         ,            ,           ,    fault,      1,
                false DPA03,  fault,    fault,         olt,      fault,    fault,      1,
                false DPA01,  fault,       at,       fault,          2,    fault,      1,
  • # c'est assez similaire a

    Posté par . Évalué à 3.

    http://linuxfr.org/forums/programmation-perl/posts/spliter-un-fichier

    Que tu as toi même posté

    en plus je ne sais pas comment ton fichier est généré, mais c'est assez moisi (en gros il manque une virgule avant le premier false, ce qui fait qu'un parser csv va décaler la première colonne.
    mais bon en bon gros dégueulasse tu peux faire

    • lire la date et la jeter
    • lire la première ligne et la transformer en tableau man perlfunc, fonction split
    • lire la deuxième ligne et la transformer en tableau, utiliser shift au besoin
    • tant que la première ligne a des éléments regarder si c'est false afficher la tête de t2, quoiqu'il arrive virer les deux têtes.

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: c'est assez similaire a

      Posté par . Évalué à -4.

      Salut Fearan,
      comme personne ne pouvait m'aider pour le precedant j'ai suggerer que ceci serait peut etre simple.
      comment peut tu implementer le dernier point a savoir :

      tant que la première ligne a des éléments regarder si c'est false afficher la tête de t2, quoiqu'il arrive virer les deux têtes.

      • [^] # Re: c'est assez similaire a

        Posté par . Évalué à 2.

        je dirai un

        ====

        while(@t1)
        {
          print "$t1[0]\n" if( $t2[0] =~ /false/ );
        
          shift @t1;
          shift @t2;
        }

        J'ai pas testé, mais c'est l'idée; sinon tu peux aussi parcourir t2 avec un for (avec indice, ou un foreach avec valeur)

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.