Bonjour,
je cherche à remplacer un mot dans un fichier texte.
J'arrive à le faire en créant un nouveau fichier, puis en remplaçant l'ancien fichier par le nouveau.
Je me demandais s'il était possible de faire la modification directement sur le fichier d'origine, sans passer par un fichier intermédiaire (à la façon sed -i).
Je suppose qu'il faut ouvrir le fichier en rw, mais je ne sais pas comment écrire dans le fichier à l'endroit qui va bien.
Il y a peut être une astuce qui m'échappe.
Merci
# sed : remplacement d'une chaîne
Posté par Sebastian . Évalué à 1.
Il y a un précédent article sur le sujet.
Il est peut être ancien, mais toujours d'actualité ;)
http://linuxfr.org/tips/27.html
[^] # Re: sed : remplacement d'une chaîne
Posté par liberforce (site web personnel) . Évalué à 2.
# Seek/tell, mais pas forcément intéressant
Posté par Thomas Hervé . Évalué à 2.
# seek() / tell()
Posté par lolop (site web personnel) . Évalué à 3.
Après, si la chaine de remplacement est plus grande, il faut commencer par agrandir le fichier et recopier tout ce qui est derrière afin de faire de la place - puis ensuite seulement remplacer ce que tu veux.
Et si la chaine de remplacement est plus petite, il faut écraser le morceau de l'ancienne chaine qui dépasse en recopiant tout ce qui est derrière, puis tronquer le fichier.
Si tu peux utiliser les fichiers mappés, ça sera peut-être un peu plus naturel - voir quand même côté modification de la taille d'un fichier mappé.
PS. Pour raccourcir un fichier, cf chsize()
Zieute Google:
man seek
man tell
man chsize
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.