slt
je ve changer la phrase d'une ligne d'un fichier texte avec une autre phrase avec perl. comment je pe faire stp?
notez que je connais le numero de la ligne.
slt
je ve changer la phrase d'une ligne d'un fichier texte avec une autre phrase avec perl. comment je pe faire stp?
notez que je connais le numero de la ligne.
probleme classique mais pas si trivial que ca
tu ne peu pas modifier comme ca un fichier en son milieu (à moins que ce que tu ajoute et ce que tu enleve soit exactement de la meme taille).
La solution consiste toujours à copier un bout du fichier. La solution minimum est d'ouvire le fichier en lecture/ecriture, scanner jusqu'à la ligne concernée, lire le reste du fichier dans un buffer (ou un autre fichier si trop gros), faire un truncate, puis ajouter la nouvelle ligne et le buffer...
Si le fichier est pas tres gros le mieux est surement de le slurper entierement en memoire, faire la modif avec une regexp, puis le réécrire.
Enfin bon le plus simple, le plus optimisé, et le plus clair à ecrire et a maintenir est encore sans doute d'utiliser le module Tie::File :
http://search.cpan.org/~mjd/Tie-File-0.96/
bonjour
j'ai jamais programmer avec perl,
la derniere fois j'ai remplace une phrase d'un fichier texte par une autre phrase avec l'instruction:
perl -i -p -e 's/database dm/interface manu/g' fichier.txt
mais maintenant je ve ecraser une ligne que je connais son numero et la remplacer par une autre phrase.
merci
Si tu veux faire ça avec un one-liner, fais ça avec :
(Remplacement de la 23ème ligne par "le remplacement de ma ligne")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2perl -i -p -e '$_ = "le remplacement de ma ligne\n" if $. == 23' fichier.txt
--
Jedaï
Ben c'est sûr que niveau robustesse et extensibilité.... Mais bon, je n'ai pas l'impression que le posteur veuille vraiment apprendre Perl. Autant lui donner un petit one-liner (effort minimal de notre part) qui fasse ce qu'il veut. Et en espérant que ça lui donne envie d'en savoir plus !Envoyé par pospos
![]()
(Sinon je suis d'accord que la meilleure solution est sans doute Tie::File)
--
Jedaï
Partager