[PERL] Comment écrire à la fin d'un fichier..
Fermé
Barichon
Messages postés
19
Date d'inscription
mardi 29 septembre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
-
24 nov. 2009 à 15:31
lami20j - 2 déc. 2009 à 10:20
lami20j - 2 déc. 2009 à 10:20
A voir également:
- [PERL] Comment écrire à la fin d'un fichier..
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
7 réponses
Barichon
Messages postés
19
Date d'inscription
mardi 29 septembre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
24 nov. 2009 à 15:54
24 nov. 2009 à 15:54
Pour aider dans votre aide, résultat attendu:
<SOURCE>
test-test-test
</SOURCE>
Perso, je ne trouve pas.
Merci d'avance.
Romain
<SOURCE>
test-test-test
</SOURCE>
Perso, je ne trouve pas.
Merci d'avance.
Romain
toto1983
Messages postés
205
Date d'inscription
samedi 16 mai 2009
Statut
Membre
Dernière intervention
25 mars 2010
13
24 nov. 2009 à 15:59
24 nov. 2009 à 15:59
Peut être ta commande de sortie qui va pas ? mauvaise synthaxe ou pas adaptée ?
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
24 nov. 2009 à 16:01
24 nov. 2009 à 16:01
hello
ne serait-ce pas qu'après avoir "reculé" de 9, il écrase le texte, au lieu de l'insérer. le >> du open n'ajoute qu'à la fin du fichier
ne serait-ce pas qu'après avoir "reculé" de 9, il écrase le texte, au lieu de l'insérer. le >> du open n'ajoute qu'à la fin du fichier
Barichon
Messages postés
19
Date d'inscription
mardi 29 septembre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
24 nov. 2009 à 16:01
24 nov. 2009 à 16:01
merci de ta réponse,
Je penses pas je fais un banal close FD;
...
Je penses pas je fais un banal close FD;
...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Barichon
Messages postés
19
Date d'inscription
mardi 29 septembre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
24 nov. 2009 à 17:29
24 nov. 2009 à 17:29
Personne n'est en mesure de m'aider svp ?
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
25 nov. 2009 à 11:03
25 nov. 2009 à 11:03
je pense qu'il faut lire chaque ligne du fichier, l'écrire en ajoutant ton texte avant d'écrire la dernière ou utiliser un outil comme sed
Salut,
Selon ton cas exposé voici une solution (les éventuelles lignes à la fin sont prises en compte), mais il ne faut pas généraliser la solution.
La solution ne tient pas compte des 9 caractères (en fait tu as oublié le caractère de saute de ligne et les éventuelles caractères non-imprimables qu'on ne les vois pas).
Je me suis contenté d'écrire avant la ligne </SOURCE> de la fin dans l'exemple que tu as montré (je ne dit pas de la fin de ton fichier)
Tu peux tester sur un fichier qui n'as pas des lignes vides à la fin par exemple.
Le fichier sur lequel j'ai testé
Le script
Le résultat
Selon ton cas exposé voici une solution (les éventuelles lignes à la fin sont prises en compte), mais il ne faut pas généraliser la solution.
La solution ne tient pas compte des 9 caractères (en fait tu as oublié le caractère de saute de ligne et les éventuelles caractères non-imprimables qu'on ne les vois pas).
Je me suis contenté d'écrire avant la ligne </SOURCE> de la fin dans l'exemple que tu as montré (je ne dit pas de la fin de ton fichier)
Tu peux tester sur un fichier qui n'as pas des lignes vides à la fin par exemple.
Le fichier sur lequel j'ai testé
lami20j@debian:~$ cat fichier.txt dlfk kdkf <SOURCE> </SOURCE> lami20j@debian:~$
Le script
lami20j@debian:~$ cat insert2last.pl #!/usr/bin/perl use strict;use warnings; open F,"fichier.txt"; open FF,">fichier_resultat"; my $n=0; for(reverse <F>){ chomp; # suppression saut ligne length==0?$n++:last; # compter les lignes vides # sortir de boucle des que 1ère ligne non-vide est rencontrée } while(<F>){}; # pour la variable $. (nombre de lignes de fichier) my $i=$.-$n-2; #-1 puisque index commence à zéro #-1 pour ne pas prendre la dernière ligne non vide seek(F,0,0); #déplacement au début du fichier print FF ((<F>)[0..$i]),"test-test-test\n"; # tranche de liste jusque l'avant dernière ligne # non-vide du fichier seek(F,0,0); print FF ((<F>)[$i+1..$i+$n+1]); # tranche de liste de la dernière ligne non-vide # jusqu'à la fin de fichier __END__
Le résultat
lami20j@debian:~$ cat fichier_resultat dlfk kdkf <SOURCE> test-test-test </SOURCE> lami20j@debian:~$