effacer début fichier texte [Perl] - Perl - Programmation
Marsh Posté le 05-04-2006 à 09:58:10
un truc dans ce genre là, ça te sort toutes les lignes du fichier donné en argument à partir du moment où on rencontre le mot DISPLACEMENT. Je suis pas sûr d'avoir compris ce que tu voulais exactement, mais ça ne devrait pas en être trop loin...
Code :
|
Marsh Posté le 05-04-2006 à 16:25:41
c'est cool, ca marche !!
merci !
J'ai d'ailleurs rajouté $found = 0 if /fintexte/
pour qu'il s'arrete quand il detecte fintexte, ca fonctionne également.
Encore merci !
:-)
Marsh Posté le 05-04-2006 à 16:31:26
fiftoman a écrit : J'ai d'ailleurs rajouté $found = 0 if /fintexte/ |
tu devrais plutôt sortir du while quand il détecte "fintexte" : ça téviterait de parcourir la fin du fichier qui ne t'intéresse pas.
Marsh Posté le 05-04-2006 à 18:57:35
En fait, je vois pas comment le faire sortir de la boucle..
Voilà mon code:
#! /usr/freeware/bin/perl
use strict;
use warnings;
my $found = 0;
@ARGV = qw (fichier1.txt);
open(F06bis,">>fichier2.txt" ) || die "impossible to create this file: $!\n";
while (<> )
{
$found = 1 if /mot_de_debut/;
$found = 0 if /mot_de_fin/;
print F06bis if $found;
}
Par contre j'ai un probleme avec les gros fichiers. Je m'explique:
Pour les petits fichiers, il me coupe bien mon texte comme il faut pour le mettre dans fichier2.txt. Donc pas de problème.
Par contre, si le fichier1.txt est très gros, il me coupe le début mais pas la fin.... C'est À dire que fichier2.txt commence effectivement à 'mot_de_debut' mais il se finit comme le fichier1.txt à la seule différence qu'il m'a effacé juste 'mot_de_fin'.
Il y a une limite de taille de fichier pour les boucles en perl ????
Merci.
Miguel
Marsh Posté le 05-04-2006 à 22:16:18
Citation : En fait, je vois pas comment le faire sortir de la boucle.. |
la commande 'last' te permet de sortir directement de la boucle en cours. dans ton cas, il suffit de mettre
last if /mot_de_fin/ |
Citation : Par contre, si le fichier1.txt est très gros, il me coupe le début mais pas la fin.... C'est À dire que fichier2.txt commence effectivement à 'mot_de_debut' mais il se finit comme le fichier1.txt à la seule différence qu'il m'a effacé juste 'mot_de_fin'. |
si l'utilisation de 'last' ne règle pas ce problème, je ne sais pas ce que tu peux faire. Je n'ai jamais été confronté à ce type de problèmes
Citation : @ARGV = qw (fichier1.txt); |
il serait plus propre d'ouvrir directement 'fichier1.txt' en lecture
Marsh Posté le 06-04-2006 à 11:45:02
ok merci.
Pour le problème avec les gros fichiers, on m'a dit que ca dépend de la RAM du PC, c'est ce que j'ai entendu dire, mais rien n'est sûr à 100 %..
Donc bon, je crois que le sujet est clos jusqu'à nouvel ordre..
bonne journée !
Marsh Posté le 05-04-2006 à 09:19:20
Bonjour,
j'aimerais coder un script en perl qui m'efface le début d'un fichier texte et le réécrit dans un nouveau fichier texte.
En fait, le début de ce fichier s'arrête quand je rencontre le mot " D I S P L A C E M E N T " dans ce fichier.
à partir de ce mot, le nouveau fichier créé doit rester identique au fichier texte d'origine.
Vous savez comment on fait ca svp ?
merci