• [^] # Re: Comment poser une question

    Posté par . En réponse au message incrémenter les lignes d'un fichier et découper à 30 lignes et passer à une nouvelle page. Évalué à 2. Dernière modification le 01 mai 2015 à 11:51.

    Ouah, mets directement un exemple, c'est tout de suite plus clair...

    Si tu galère à coder , un outil tout prêt pour ça: split (man split ou split --help pour les explications)

    split -l 3 -d result_1.csv fhout

    En perl vite fait toujours sur ton exemple avec quelques explications

    use strict;
    use warnings;
    open IN,'result_1.csv';
    my $count_lines = 0;
    my $ind=1;
    my $content="";
    my $split_length=3; # nombre de lignes attendues / fichier splitté
    for my $line (<IN>) {
     if($count_lines && $count_lines%$split_length==0){ #ecrit les lignes déjà lues par $split_length
     open OUT, ">fhout".$ind;
     print OUT $content;
     close OUT;
     # on avance les compteurs et on repart à zéro pour stocker les lignes
     $ind++;
     $content=$line;
     $count_lines++;
     }
     else{
     # on stocke les lignes
     $content.=$line;
     $count_lines++;
     }
    }
    #Si on ne finit pas sur un multiple de $split_length, on print le reste dans un dernier fichier
    if($content ne ""){
     $ind++;
     open OUT, ">fhout".$ind;
     print OUT $content;
     close OUT;
    }
    close IN;

    Et bé, grillé par une version bien plus optimisé :)