Perl Supprimer retour chariot une ligne sur 2

orlando_84 Messages postés 6 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

Je souhaite connaitre la commande pour supprimer une ligne sur deux dans un fichier

Merci de vos contribution
Configuration: Windows XP / Firefox 3.5.8

6 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Essaie plutôt de nous montre ce que tu essaie faire.
    A cette question je te réponds, pour l'autre on attends voir ce que tu as essayer faire.
    On n'est pas la pour faire à ta place, mais pour t'aider où ça coince chez toi.

    Les lignes paires et impaires sont traitées.

    lami20j@debian-acer:~$ cat ligne 
    ligne1
    ligne2
    ligne3
    ligne4
    ligne5
    ligne6
    lami20j@debian-acer:~$ perl -ne 'print if ($.-1)%2==0' ligne
    ligne1
    ligne3
    ligne5
    lami20j@debian-acer:~$ perl -ne 'print if $.%2==0' ligne
    ligne2
    ligne4
    ligne6

    0
  2. orlando_84 Messages postés 6 Statut Membre
     
    Supprimer toutes les ligne impaires
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Re,

      Ce qui est équivalent a afficher les lignes paires.
      Regarde mon exemple, les deux cas sont traités.
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    avec awk (nawk sur Solaris)
    $ cat a2
    ligne1
    ligne2
    ligne3
    ligne4
    ligne5
    ligne6
    $ 
    $ awk 'NR%2{print}' a2
    ligne1
    ligne3
    ligne5
    $ 
    $ awk '!(NR%2){print}' a2
    ligne2
    ligne4
    ligne6
    
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. orlando_84 Messages postés 6 Statut Membre
     
    Voici ma solution

    open(FILE_TEMP, "<FILE_TEMP") or die "Cannot open fichier : $!";
    open(FILE_FINAL, ">FILE_FINAL") or die "Cannot open fichier : $!";

    while (<FILE_TEMP>) {
    if (($.-1)%2==0) {
    s/\n//;
    print FILE_FINAL $_;
    }
    else {
    print FILE_FINAL $_;
    }
    }

    close (FILE_FINAL);
    close (FILE_TEMP);
    0
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    pour supprimer une ligne sur deux dans un fichier
    Ta solution ne corresponde pas à ce que tu as demandé ;-)

    En revanche vu ton code je comprends que tu voulais en faites supprimer tout simplement le saut de ligne sur deux lignes.

    ligne1
    ligne2
    ligne3
    ligne4


    en

    ligne1lign2
    ligne3ligne4


    Une ligne et un saut de ligne ce n'est pas la même chose ;-)
    0