[PERL] Ecrire dans un fichier
Résolu/Fermé
kayari
Messages postés
2
Date d'inscription
dimanche 24 octobre 2004
Statut
Membre
Dernière intervention
16 mai 2005
-
16 mai 2005 à 14:00
cyrille - 7 juil. 2011 à 17:53
cyrille - 7 juil. 2011 à 17:53
A voir également:
- [PERL] Ecrire dans un fichier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
44 réponses
Utilisateur anonyme
16 mai 2005 à 20:31
16 mai 2005 à 20:31
Bonsoir,
OK?
#!/usr/bin/perl -w use strict; # D'abord charger le fichier: open(FILE, "$fichier") || die "Erreur E/S:$!\n"; my @contenu = <FILE>; close(FILE); # Ensuite, changer à la ligne 3 et 4: $contenu[2] =~ s/2/5/; # par exemple $contenu[3] =~ s/4/6/; # par exemple # Enfin on sauvegarde le fichier: open(FILE, ">$fichier") || die "Erreur E/S:$!\n"; foreach my $ligne (@contenu) { chomp $ligne; print FILE "$ligne\n"; }
OK?
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
12 mars 2007 à 10:08
12 mars 2007 à 10:08
Bonjour,
Premièrement, je voudrais aussi écrire dans un fichier, mais je ne coonias rien du perl.
mon fichier est normalisé comme cela:
05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl
05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl
05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl
je souhaite pouvoir ajouter en début de chaque ligne une date au format 00/00/0000 puis un carcatere "espace" et un "=" pour séparer. L'idéal serait d'avoir une fenetre d'affichage qui demande "veuillez saisir la date a rajouter au fichier :" et ensuite ajouter cette date au début de chaque ligne.
les lignes du fichier doient devenir comme cela par exemple
02/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl
Ensuite, j'aimerais, toujours en perl, concatener plusieurs fichers. C'est a dire, j'ai plusieurs fichiers .txt de date différentes (auxquels j'ai pu ajouter la date auparavant) et je voudrais n'en avoir plus qu'un seul qui contient l'ensemble du contenu des autres fichiers.
En ésperant avoir été clair ...
Merci par avance
Premièrement, je voudrais aussi écrire dans un fichier, mais je ne coonias rien du perl.
mon fichier est normalisé comme cela:
05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl
05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl
05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl
je souhaite pouvoir ajouter en début de chaque ligne une date au format 00/00/0000 puis un carcatere "espace" et un "=" pour séparer. L'idéal serait d'avoir une fenetre d'affichage qui demande "veuillez saisir la date a rajouter au fichier :" et ensuite ajouter cette date au début de chaque ligne.
les lignes du fichier doient devenir comme cela par exemple
02/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl
Ensuite, j'aimerais, toujours en perl, concatener plusieurs fichers. C'est a dire, j'ai plusieurs fichiers .txt de date différentes (auxquels j'ai pu ajouter la date auparavant) et je voudrais n'en avoir plus qu'un seul qui contient l'ensemble du contenu des autres fichiers.
En ésperant avoir été clair ...
Merci par avance
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
13 mars 2007 à 15:45
13 mars 2007 à 15:45
script actuel
https://www.cjoint.com/?dnpQGKeWgD
type resultatfinal.txt
https://www.cjoint.com/?dnpVRjmYDV
effectivement, sur l'imprim ecran, j'avais oublié le M
mais après avoir refait plusieurs fois la manip, et sans oublié le M, ça ne marche pas ... je ne sais plus quoi essayer arrrgggggHHH
ce n'est pas le M, enfin, ça l'a été à un moment sans que je me rends compte, mais plus maintenant.
https://www.cjoint.com/?dnpQGKeWgD
type resultatfinal.txt
https://www.cjoint.com/?dnpVRjmYDV
effectivement, sur l'imprim ecran, j'avais oublié le M
mais après avoir refait plusieurs fois la manip, et sans oublié le M, ça ne marche pas ... je ne sais plus quoi essayer arrrgggggHHH
ce n'est pas le M, enfin, ça l'a été à un moment sans que je me rends compte, mais plus maintenant.
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
13 mars 2007 à 16:00
13 mars 2007 à 16:00
jai trouvé une premiere erreur dans le nom des fichiers statXiti*, je chauffe , je me rapporche.
maintenant, la console me dit :
D:\Documents and Settings\M149067\Bureau>c:\perl\bin\perl.exe code_f.pl
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 1274.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 1274.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 2721.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 2721.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 5271.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 5271.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 7052.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 7052.
maintenant, la console me dit :
D:\Documents and Settings\M149067\Bureau>c:\perl\bin\perl.exe code_f.pl
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 1274.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 1274.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 2721.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 2721.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 5271.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 5271.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 7052.
Use of uninitialized value in concatenation (.) or string at code_f.pl line 9, <
F_LIRE> line 7052.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 mars 2007 à 16:09
13 mars 2007 à 16:09
tes fichiers commence avec stat ou sta ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 mars 2007 à 16:24
13 mars 2007 à 16:24
Comme je te l'ai dit perl ecrire dans un fichier#25
une seule lettre peut faire couler beaucoup d'encre :-DD
c'est bien que tu as réussi :-))
Bonne continuation.
une seule lettre peut faire couler beaucoup d'encre :-DD
c'est bien que tu as réussi :-))
Bonne continuation.
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
19 mars 2007 à 12:16
19 mars 2007 à 12:16
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 mai 2005 à 17:24
16 mai 2005 à 17:24
Salut,
petite question.
Ton fichier contient plusieurs lignes
C'est ça que tu veut modifier?
Si tu me donnes le fichier (sauf s'il n'est pas confidentiel) je pourrais t'aider.
A+
petite question.
Ton fichier contient plusieurs lignes
s2 t4
C'est ça que tu veut modifier?
Si tu me donnes le fichier (sauf s'il n'est pas confidentiel) je pourrais t'aider.
A+
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 mai 2005 à 23:54
16 mai 2005 à 23:54
Salut kayari,
Il y a une chose que je ne comprend pas.
" à chaque fois je vais modifier les lignes 3 et 4 seulement et j'ai des dizaines de lignes dans le fichier "
Ton fichier volumineux quel que soit sa taille ne contient qu'une seule ligne 3 et une seule ligne 4.
Donc c'est quoi ton souci en fait?
Il y a une chose que je ne comprend pas.
" à chaque fois je vais modifier les lignes 3 et 4 seulement et j'ai des dizaines de lignes dans le fichier "
Ton fichier volumineux quel que soit sa taille ne contient qu'une seule ligne 3 et une seule ligne 4.
Donc c'est quoi ton souci en fait?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
17 mai 2005 à 00:26
17 mai 2005 à 00:26
Si toutes les lignes que tu veut modifier sont
s2
t4
alors tu n'as qu'à taper dans la konsole
perl -p -i -e 's#(?<=s)2$#5#g' ton_fichier
perl -p -i -e 's#(?<=t)4$#6#g' ton_fichier
s2
t4
alors tu n'as qu'à taper dans la konsole
perl -p -i -e 's#(?<=s)2$#5#g' ton_fichier
perl -p -i -e 's#(?<=t)4$#6#g' ton_fichier
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 mars 2007 à 10:39
12 mars 2007 à 10:39
Salut,
je n'ai pas testé
tu peux le tester sans peur, rien ne sera modifié dans tes fichiers d'origine
ou en ligne de commande(il faut juste mettre la date que tu veux
Donc avant de la 2ème variante il faut vider resultat.txt
je n'ai pas testé
tu peux le tester sans peur, rien ne sera modifié dans tes fichiers d'origine
#!/usr/bin/perl use warnings;use strict; print "Veuillez saisir la date à rajouter au fichier (format jj/mm/aaaa, ex : 12/03/2007) : "; chomp(my $date = <STDIN>); open F_ECRIRE,">>resultat.txt" or die "E/S : $!\n"; chomp(my @fic = glob("*.txt")); foreach my $e(@fic){ open F_LIRE,"$e" or warn "E/S : $!\n"; while(<F_LIRE>){ print F_ECRIRE "$date = $_"; } } __END__
ou en ligne de commande(il faut juste mettre la date que tu veux
cat *.txt | perl -ne 's#(.*)#12/03/2007 = $1#;print' > resultat.txtDanbs les 2 cas le resultat on l'obtient dans le fichier resultat.txt.
Donc avant de la 2ème variante il faut vider resultat.txt
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
12 mars 2007 à 11:16
12 mars 2007 à 11:16
Le fichier resultat.txt est vide après execution de la commande ...
Je pense que cela ne fonctionne pas correctement, la compilation est ok, il y a bien création du fichier resultat.txt mais aucun contenu a l'interieur.
Est ce normal ?
en attendant, je vais essayer avec mes fichiers.
Je pense que cela ne fonctionne pas correctement, la compilation est ok, il y a bien création du fichier resultat.txt mais aucun contenu a l'interieur.
Est ce normal ?
en attendant, je vais essayer avec mes fichiers.
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
12 mars 2007 à 11:25
12 mars 2007 à 11:25
J'ai parler un peu trop vite ...
Je ne comprends pas assez bien la structure du code pourpouvoir tester avec mes fichiers, j'aurai besoin de qq commentaires :
print "Veuillez saisir la date à rajouter au fichier (format jj/mm/aaaa, ex : 12/03/2007) : "; #affiche la demande de saisie
chomp(my $date = <STDIN>); # enregistre la saisie dans la variable date ?
open F_ECRIRE,">>resultat.txt" or die "E/S : $!\n"; # crée le fichier resultat en mode ecriture ??
chomp(my @fic = glob("*.txt")); # ??
foreach my $e(@fic){
open F_LIRE,"$e" or warn "E/S : $!\n";
while(<F_LIRE>){
print F_ECRIRE "$date = $_";
}
}
__END__
je suis largué sur la fin, avec la boucle foreach
Help please
Je ne comprends pas assez bien la structure du code pourpouvoir tester avec mes fichiers, j'aurai besoin de qq commentaires :
print "Veuillez saisir la date à rajouter au fichier (format jj/mm/aaaa, ex : 12/03/2007) : "; #affiche la demande de saisie
chomp(my $date = <STDIN>); # enregistre la saisie dans la variable date ?
open F_ECRIRE,">>resultat.txt" or die "E/S : $!\n"; # crée le fichier resultat en mode ecriture ??
chomp(my @fic = glob("*.txt")); # ??
foreach my $e(@fic){
open F_LIRE,"$e" or warn "E/S : $!\n";
while(<F_LIRE>){
print F_ECRIRE "$date = $_";
}
}
__END__
je suis largué sur la fin, avec la boucle foreach
Help please
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 mars 2007 à 13:50
12 mars 2007 à 13:50
La ligne de commande fonctionne
jack@pc-jack:~$ ls *.txt f1.txt f2.txt f3.txt jack@pc-jack:~$ cat *.txt 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl jack@pc-jack:~$ cat *.txt | perl -ne 's#^#12/03/2007 = #;print' > resultat.txt jack@pc-jack:~$ cat resultat.txt 12/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 12/03/2007 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 12/03/2007 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl 12/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 12/03/2007 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 12/03/2007 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl 12/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 12/03/2007 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 12/03/2007 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 mars 2007 à 13:54
12 mars 2007 à 13:54
Le script aussi
jack@pc-jack:~$ ls *.txt f1.txt f2.txt f3.txt jack@pc-jack:~$ cat f1.txt 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl jack@pc-jack:~$ cat f2.txt 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl jack@pc-jack:~$ cat f3.txt 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl jack@pc-jack:~$ cat fic.pl #!/usr/bin/perl use warnings;use strict; print "Veuillez saisir la date à rajouter au fichier (format jj/mm/aaaa, ex : 12/03/2007) : "; chomp(my $date = <STDIN>); open F_ECRIRE,">>resultat.txt" or die "E/S : $!\n"; chomp(my @fic = glob("*.txt")); foreach my $e(@fic){ open F_LIRE,"$e" or warn "E/S : $!\n"; while(<F_LIRE>){ print F_ECRIRE "$date = $_"; } } __END__ jack@pc-jack:~$ ls resultat.txt ls: resultat.txt: Aucun fichier ou répertoire de ce type jack@pc-jack:~$ perl fic.pl Veuillez saisir la date à rajouter au fichier (format jj/mm/aaaa, ex : 12/03/2007) : 12/03/2007 jack@pc-jack:~$ cat resultat.txt 12/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 12/03/2007 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 12/03/2007 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl 12/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 12/03/2007 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 12/03/2007 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl 12/03/2007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 12/03/2007 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 12/03/2007 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
12 mars 2007 à 13:55
12 mars 2007 à 13:55
Bon alors, tout compte fait, ça marche nickel merci
Si j'ai bien compris, ça marche avec un fichier *.txt dans le meme reprtoire que le code.pl...vrai ? mais si j'ai plusieurs fichiers dans le repertoire et je souhaite choisir le fichier a traiter ??
Je souhaiterais améliorer cela, je voudrais pouvoir effectuer l'ajout de date sur plusieurs fichiers txt avec des date différentes, on obtient plusieurs fichiers résultat.txt pour ensuite, concatener l'ensemble des resultat.txt en un seul fichier resultatfinal.txt !
Comment faire?
Merci
Si j'ai bien compris, ça marche avec un fichier *.txt dans le meme reprtoire que le code.pl...vrai ? mais si j'ai plusieurs fichiers dans le repertoire et je souhaite choisir le fichier a traiter ??
Je souhaiterais améliorer cela, je voudrais pouvoir effectuer l'ajout de date sur plusieurs fichiers txt avec des date différentes, on obtient plusieurs fichiers résultat.txt pour ensuite, concatener l'ensemble des resultat.txt en un seul fichier resultatfinal.txt !
Comment faire?
Merci
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 mars 2007 à 14:07
12 mars 2007 à 14:07
Je suis au boulot.
J'ai vu que tu as posté le msg sur developpez.com :-))
Je vais regarder ce soir.
J'ai vu que tu as posté le msg sur developpez.com :-))
Je vais regarder ce soir.
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
12 mars 2007 à 14:17
12 mars 2007 à 14:17
OK, c'est cool
moi aussi, je suis au boulot. c'est d'ailleurs pour ça que je fais ça.
Pour résumé, j'ai presque compris mais il me reste à, dans l'ordre :
- pouvoir choisir une date et un fichier, obtenir un fichier résultat
ex: le fichier statXiti_061206 à la date du 06/12/2006, ce qui donne en sortie le fichier resultat_06122006.txt
et ce, pour plusieurs fichiers dans le meme repertoire avec des dates différentes (staXiti_061207.txt, staXiti_061208.txt, staXiti_061209.txt...)
- etre capable de concatener, si possible de façon automatique, les fichiers résultat_XDATEX.txt en un seul fichier resultatfinal.txt
Merci pour ton aide,
Bon courage
moi aussi, je suis au boulot. c'est d'ailleurs pour ça que je fais ça.
Pour résumé, j'ai presque compris mais il me reste à, dans l'ordre :
- pouvoir choisir une date et un fichier, obtenir un fichier résultat
ex: le fichier statXiti_061206 à la date du 06/12/2006, ce qui donne en sortie le fichier resultat_06122006.txt
et ce, pour plusieurs fichiers dans le meme repertoire avec des dates différentes (staXiti_061207.txt, staXiti_061208.txt, staXiti_061209.txt...)
- etre capable de concatener, si possible de façon automatique, les fichiers résultat_XDATEX.txt en un seul fichier resultatfinal.txt
Merci pour ton aide,
Bon courage
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
12 mars 2007 à 20:35
12 mars 2007 à 20:35
Avant l'exécution de script
Le script
Exécution de script
Le résultat
lami20j@debian:~/trash/chabrrr$ ls -1 staXiti_061207.txt staXiti_061208.txt staXiti_061209.txt xiti_stat.pl lami20j@debian:~/trash/chabrrr$ cat staXiti_061207.txt 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl lami20j@debian:~/trash/chabrrr$ cat staXiti_061208.txt 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl lami20j@debian:~/trash/chabrrr$ cat staXiti_061209.txt 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl
Le script
lami20j@debian:~/trash/chabrrr$ cat xiti_stat.pl #!/usr/bin/perl use warnings;use strict; my @fic_stat = </home/lami20j/trash/chabrrr/staXiti*>; foreach my $fichier (@fic_stat){ $fichier =~ /\/staXiti_(\d{4})(\d\d)\.txt/; my $date = "${1}20$2"; my $fic = "resultat_" . "$date.txt"; open F_ECRIRE,">>$fic" or warn "E/S : $!\n"; open F_LIRE,"$fichier" or warn "E/S : $!\n"; while(<F_LIRE>){ s/^/$date = /; print F_ECRIRE $_; } } #*********** FIN TRAITEMENT **********# # # concateantion dans resultatfinal.txt open F_ECRIRE,">>resultatfinal.txt" or die "E/S : $!\n"; my @fic_res = </home/lami20j/trash/chabrrr/resultat_*.txt>; foreach my $e(@fic_res){ open F_LIRE,"$e" or warn "E/S : $!\n"; while(<F_LIRE>){ print F_ECRIRE; } } __END__
Exécution de script
lami20j@debian:~/trash/chabrrr$ perl xiti_stat.pl
Le résultat
lami20j@debian:~/trash/chabrrr$ ls -1 resultat_06122007.txt resultat_06122008.txt resultat_06122009.txt resultatfinal.txt staXiti_061207.txt staXiti_061208.txt staXiti_061209.txt xiti_stat.pl lami20j@debian:~/trash/chabrrr$ cat resultat_06122007.txt 06122007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 06122007 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 06122007 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl lami20j@debian:~/trash/chabrrr$ cat resultat_06122008.txt 06122008 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 06122008 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 06122008 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl lami20j@debian:~/trash/chabrrr$ cat resultat_06122009.txt 06122009 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 06122009 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 06122009 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl lami20j@debian:~/trash/chabrrr$ cat resultatfinal.txt 06122007 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 06122007 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 06122007 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl 06122008 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 06122008 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 06122008 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl 06122009 = 05:57:42 10.100.62.52 /hit.xiti s=241243&s2=1&p=PNC&hl 06122009 = 05:57:43 10.100.62.52 /hit.xiti s=241243&s2=1&p=GSM_reconnu&hl 06122009 = 05:57:49 10.100.62.52 /hit.xiti s=241243&s2=1&p=transfere&hl lami20j@debian:~/trash/chabrrr$
chabRRR
Messages postés
63
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
27 novembre 2018
5
13 mars 2007 à 11:34
13 mars 2007 à 11:34
Bonjour,
je te remercie pour ton aide
Mais j'ai encore deux petites questions :
1. je n'arrive pas a faire fonctionner le script correctement avec mes noms de repertoire. Jai essayé comme cela mais ça ne convient pas ...
le code
#!C:/Perl/bin/perl.exe
my @fic_stat = </d:\Documents and SettingsM149067\Bureau\Simon\DB\Perl\StatXiti\staXiti*>;
foreach my $fichier (@fic_stat){
$fichier =~ /\/staXiti_(\d{4})(\d\d)\.txt/;
my $date = "${1}20$2";
my $fic = "resultat_" . "$date.txt";
open F_ECRIRE,">>$fic" or warn "E/S : $!\n";
open F_LIRE,"$fichier" or warn "E/S : $!\n";
while(<F_LIRE>){
s/^/$date = /;
print F_ECRIRE $_;
}
}
#*********** FIN TRAITEMENT **********#
#
# concateantion dans resultatfinal.txt
open F_ECRIRE,">>resultatfinal.txt" or die "E/S : $!\n";
my @fic_res = </d:\Documents and Settings\M149067\Bureau\Simon\DB\Perl\StatXiti\resultat_*.txt>;
foreach my $e(@fic_res){
open F_LIRE,"$e" or warn "E/S : $!\n";
while(<F_LIRE>){
print F_ECRIRE;
}
}
__END__
Que dois je faire pour indique mon nom de repertoire ?
2. je travaille sous windows et pas unix. je crois que la commande cat devient copy sous win, je vais aller voir le fonctionnement de cette commande. Si tu as des informations là dessus aussi, n'hesites pas a m'en faire part;
Merci encore
je te remercie pour ton aide
Mais j'ai encore deux petites questions :
1. je n'arrive pas a faire fonctionner le script correctement avec mes noms de repertoire. Jai essayé comme cela mais ça ne convient pas ...
le code
#!C:/Perl/bin/perl.exe
my @fic_stat = </d:\Documents and SettingsM149067\Bureau\Simon\DB\Perl\StatXiti\staXiti*>;
foreach my $fichier (@fic_stat){
$fichier =~ /\/staXiti_(\d{4})(\d\d)\.txt/;
my $date = "${1}20$2";
my $fic = "resultat_" . "$date.txt";
open F_ECRIRE,">>$fic" or warn "E/S : $!\n";
open F_LIRE,"$fichier" or warn "E/S : $!\n";
while(<F_LIRE>){
s/^/$date = /;
print F_ECRIRE $_;
}
}
#*********** FIN TRAITEMENT **********#
#
# concateantion dans resultatfinal.txt
open F_ECRIRE,">>resultatfinal.txt" or die "E/S : $!\n";
my @fic_res = </d:\Documents and Settings\M149067\Bureau\Simon\DB\Perl\StatXiti\resultat_*.txt>;
foreach my $e(@fic_res){
open F_LIRE,"$e" or warn "E/S : $!\n";
while(<F_LIRE>){
print F_ECRIRE;
}
}
__END__
Que dois je faire pour indique mon nom de repertoire ?
2. je travaille sous windows et pas unix. je crois que la commande cat devient copy sous win, je vais aller voir le fonctionnement de cette commande. Si tu as des informations là dessus aussi, n'hesites pas a m'en faire part;
Merci encore
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
13 mars 2007 à 11:44
13 mars 2007 à 11:44
Je vais voir ça
Au lieu de cat utilise type sous win
Au lieu de cat utilise type sous win
16 mai 2005 à 23:42
remarque : à chaque fois je vais modifier les lignes 3 et 4 seulement et j'ai des dizaines de lignes dans le fichier
Merci pour ton indication
7 juil. 2011 à 17:53