Problèmes avec perl pour extraire une chaîne

Fermé
Victor - 21 janv. 2010 à 00:19
 lami20j - 22 janv. 2010 à 00:14
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.
A voir également:

3 réponses

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
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
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
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
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