Problèmes avec perl pour extraire une chaîne

Victor -  
 lami20j -
Bonjour,

Je cherche à extraire d'un fichier texte différentes parties, mais j'ai beau essayé je n'y arrive pas.
Quelqu'un pourrait m'aidait svp à résoudre mon pb pas à pas et m'expliquer ce qu'il faut faire.

Voilà la structure du fichier:

--00:00:00-- http://blabla.fr/
=> 'blabla/blabla.blabla'
blablabla
blablabla...

Et cela se répète au moins 100 fois...
Dc j'aimerais extraire les deux premières lignes, càd l'heure, l'url et ce qui est après la flèche.

Merci d'avance.
Configuration: Windows XP
Firefox 3.5.7

3 réponses

  1. lami20j
     
    Salut,

    Comme ça?

    lami20j@debian:~$ cat plop
    Voilà la structure du fichier:
    
    --00:00:00-- http://blabla.fr/
    => 'blabla/blabla.blabla'
    blablabla
    blablabla...
    
    Voilà la structure du fichier:
    
    --00:00:00-- https://www.afternic.com/forsale/titi.org?utm_source=TDFS_DASLNC&utm_medium=DASLNC&utm_campaign=TDFS_DASLNC&traffic_type=TDFS_DASLNC&traffic_id=daslnc&
    => 'titi/blabla.blabla'
    blablabla
    blablabla...
    Voilà la structure du fichier:
    
    --00:00:00-- http://toto.net/
    => 'toto/blabla.blabla'
    blablabla
    blablabla...
    
    lami20j@debian:~$ cat chaine.pl 
    #!/usr/bin/perl
    use strict;use warnings;
    open F,"plop" or die "E/S: plop : $!\n";
    
    while(<F>){
      print $1,"\n" if /^--(?:\d\d:){2}\d\d--\s*(http.*)/;
      print $1,"\n" if /^=>\s*(.*)/;
    }
    __END__
    
    lami20j@debian:~$  perl chaine.pl 
    http://blabla.fr/
    'blabla/blabla.blabla'
    https://www.afternic.com/forsale/titi.org?utm_source=TDFS_DASLNC&utm_medium=DASLNC&utm_campaign=TDFS_DASLNC&traffic_type=TDFS_DASLNC&traffic_id=daslnc&
    'titi/blabla.blabla'
    http://toto.net/
    'toto/blabla.blabla'
    lami20j@debian
    0
    1. Victor
       
      Salut,

      Merci beaucoup pour ta réponse mais en fait je veux que ds mon fichier de sortie soit extrait dans ce genre là :
      --00:00:00-- (tabulation) https://www.afternic.com/forsale/titi.org?utm_source=TDFS_DASLNC&utm_medium=DASLNC&utm_campaign=TDFS_DASLNC&traffic_type=TDFS_DASLNC&traffic_id=daslnc& (tabulation) => 'titi/blabla.blabla'

      Mais je veux extraire que les 2 premières lignes pas après :

      --00:00:00-- https://www.afternic.com/forsale/titi.org?utm_source=TDFS_DASLNC&utm_medium=DASLNC&utm_campaign=TDFS_DASLNC&traffic_type=TDFS_DASLNC&traffic_id=daslnc& -> ça oui
      => 'titi/blabla.blabla' -> ça oui
      blablabla -> ça je veux pas
      blablabla... -> ça je veux pas
      ......

      --00:00:00-- http://toto.net/ -> ça oui
      => 'toto/blabla.blabla' -> ça oui
      blablabla -> ça je veux pas
      blablabla... -> ça je veux pas
      ...
      ...etc
      0
  2. lami20j
     
    Salut,
    lami20j@debian:~$ cat plop
    Voilà la structure du fichier:
    
    --00:00:00-- http://blabla.fr/
    => 'blabla/blabla.blabla'
    blablabla
    blablabla...
    
    Voilà la structure du fichier:
    
    --00:00:00-- https://www.afternic.com/forsale/titi.org?utm_source=TDFS_DASLNC&utm_medium=DASLNC&utm_campaign=TDFS_DASLNC&traffic_type=TDFS_DASLNC&traffic_id=daslnc&
    => 'titi/blabla.blabla'
    blablabla
    blablabla...
    Voilà la structure du fichier:
    
    --00:00:00-- http://toto.net/
    => 'toto/blabla.blabla'
    blablabla
    blablabla...
    
    lami20j@debian:~$ cat chaine.pl 
    #!/usr/bin/perl
    use strict;use warnings;
    open F,"plop" or die "E/S: plop : $!\n";
    
    while(<F>){
      print "$1\t$2" if /^(--(?:\d\d:){2}\d\d--)\s*(http.*)/;
      print "\t$_" if /^=>\s*.*/;
    }
    __END__
    
    lami20j@debian:~$ perl chaine.pl 
    --00:00:00--    http://blabla.fr/       => 'blabla/blabla.blabla'
    --00:00:00--    https://www.afternic.com/forsale/titi.org?utm_source=TDFS_DASLNC&utm_medium=DASLNC&utm_campaign=TDFS_DASLNC&traffic_type=TDFS_DASLNC&traffic_id=daslnc&        => 'titi/blabla.blabla'
    --00:00:00--    http://toto.net/        => 'toto/blabla.blabla'
    0
    1. Victor
       
      Salut,

      Merci pr ta réponse, pourrais-tu m'expliquer ton raisonnement? car lorsque je fé ta commande cela me retourne le résultat suivant :
      10405

      Bizarre, dc je ne comprend pas!
      0
  3. lami20j
     
    Salut,

    Donne plutôt ton fichier sur lequel tu testes puisque faire des tests sur blablabla quand le fichier réel contient autre chose n'est pas le top.

    Mon raisonnement est que si j'ai les lignes que tu as indiqués alors j'affiche avec les tabulations (vu dans mon exemple de test).

    C''est à toi maintenant de me montrer ce que tu fais et sur quel fichier tu testes.

    Le fichier tu peux le mettre sur cjoint.com et coller ici le lien pour que je puisse le télécharger.
    0