replace dans fichier

Le
Mihamina (R12y) Rakotomandimby
Bonjour,

J'ai trouvé dans les divers tutoriaux comment on fait pour remplacer une
chaine par une autre.

Par contre, quelle est la méthode pour remplacer une chaine par une autre
dans un fichier? Est-ce qu'il faut
- ouvrir le fichier
- charger son contenu
- faire le remplacement,
ou bien y a-t-il un moyen plus "direct"?

Par plus "direct" j'entends ne fournir que le nom du fichier à transformer,
la chaine à remplacer, la chaine de remplacement (sans les étapes liées à
l'ouverture du fichier, donc).

Merci d'avance.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #146308
R12y wrote in message
Par contre, quelle est la méthode pour remplacer une chaine par une autre
dans un fichier? Est-ce qu'il faut
- ouvrir le fichier
- charger son contenu
- faire le remplacement,
ou bien y a-t-il un moyen plus "direct"?


Regarde Tie::File.

Stephane Chazelas
Le #146307
2007-06-26, 19:04(+02), Mihamina (R12y) Rakotomandimby:
[...]
J'ai trouvé dans les divers tutoriaux comment on fait pour remplacer une
chaine par une autre.

Par contre, quelle est la méthode pour remplacer une chaine par une autre
dans un fichier? Est-ce qu'il faut
- ouvrir le fichier
- charger son contenu
- faire le remplacement,
ou bien y a-t-il un moyen plus "direct"?

Par plus "direct" j'entends ne fournir que le nom du fichier à transformer,
la chaine à remplacer, la chaine de remplacement (sans les étapes liées à
l'ouverture du fichier, donc).
[...]


Voir les options -i et -p/-n de perl:

perl -pi -e 's/foo/bar/g' file1 file2...

voir perldoc perlrun

--
Stéphane

Stephane Chazelas
Le #146306
2007-06-27, 00:44(+02), Mihamina (R12y) Rakotomandimby:
Stephane Chazelas -
perl -pi -e 's/foo/bar/g' file1 file2...


Oui. Ca c'est en "one-liner" à partir du prompt shell.
Moi c'est dans un script que cherche à le faire, maintenant.


#! /usr/bin/perl -pi
s/foo/bar/g;

Sinon, perldoc perlrun

--
Stéphane


Mihamina (R12y) Rakotomandimby
Le #146305
Stephane Chazelas -
perl -pi -e 's/foo/bar/g' file1 file2...


Oui. Ca c'est en "one-liner" à partir du prompt shell.
Moi c'est dans un script que cherche à le faire, maintenant.

dominix
Le #146304
Stephane Chazelas -
perl -pi -e 's/foo/bar/g' file1 file2...


Oui. Ca c'est en "one-liner" à partir du prompt shell.
Moi c'est dans un script que cherche à le faire, maintenant.


un script complet tout en perl ?
en voila un :
$ perl -MOÞparse -pi -e 's/foo/bar/g'


--
dominix


Patrice Karatchentzeff
Le #146303
"Mihamina (R12y) Rakotomandimby"
Stephane Chazelas -
perl -pi -e 's/foo/bar/g' file1 file2...


Oui. Ca c'est en "one-liner" à partir du prompt shell.
Moi c'est dans un script que cherche à le faire, maintenant.


1) tu peux mettre un one-line dans un script :)
2) perlrun 't'indique ce que font ces options donc, à la limite,
tu n'as juste qu'à faire un copier-coller...

Mais à ta place, j'apprendrai Perl en achetant un bouquin ou en lisant
une doc...

PK

--
      |      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:
     |,4-  ) )-,_. , (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'_)       


Paul Gaborit
Le #146302
À (at) Wed, 27 Jun 2007 00:44:52 +0200,
"Mihamina (R12y) Rakotomandimby"
Moi c'est dans un script que cherche à le faire, maintenant.


Un one-liner est pratique car concis et rapide à écrire mais, en cas
d'erreur, il ne gère rien. Mais comme le programmeur (qui est aussi
l'utilisateur) est là, ce n'est pas un problème.

Dans un script, il vaut mieux gérer les choses le plus proprement
possible : faites une petite fonction pour faire ce que vous
voulez. En pensant a tous les cas "tordus" : que fait-on si le fichier
n'existe pas ? si on n'a pas les droits pour l'ouvrir ? s'il n'y a
plus de place sur le disque ? etc. Pensez aussi aux cas où la chaîne
contient des caractères spéciaux (pour les regexp) ou des passages à
la ligne.

L'utilisateur futur et le programmeur qui, plus tard, devra déboguer
vous en remercieront !

--
Paul Gaborit - Perl en français -
kurtz le pirate
Le #148600
In article "Mihamina (R12y) Rakotomandimby" wrote:

Bonjour,

J'ai trouvé dans les divers tutoriaux comment on fait pour remplacer une
chaine par une autre.

Par contre, quelle est la méthode pour remplacer une chaine par une autre
dans un fichier? Est-ce qu'il faut
- ouvrir le fichier
- charger son contenu
- faire le remplacement,
ou bien y a-t-il un moyen plus "direct"?


ce que moi je fais couramment :

- j'ouvre le fichier 'source'
- je fais mes remplacements
- j'écris le résultat dans 'temp'
- suivant les traitements :
- je renomme : source -> source.old et le temp -> source
- je renome temp en source et j'efface l'original



mais ne pas oublier : TIMTOWTDI :)

--
klp

GLudovic66000
Le #148599
On 27 juin, 19:57, kurtz le pirate
In article "Mihamina (R12y) Rakotomandimby"
wrote:
Bonjour,

J'ai trouvé dans les divers tutoriaux comment on fait pour remplacer une
chaine par une autre.

Par contre, quelle est la méthode pour remplacer une chaine par une a utre
dans un fichier? Est-ce qu'il faut
- ouvrir le fichier
- charger son contenu
- faire le remplacement,
ou bien y a-t-il un moyen plus "direct"?


ce que moi je fais couramment :

- j'ouvre le fichier 'source'
- je fais mes remplacements
- j'écris le résultat dans 'temp'
- suivant les traitements :
- je renomme : source -> source.old et le temp -> source
- je renome temp en source et j'efface l'original

mais ne pas oublier : TIMTOWTDI :)

--
klp


au risque d'être un peu HS, il existe gsar qui remplace un texte dans
un fichier. C'est l'équivalent de grep pour le remplacement. On peut
appeler gsar depuis perl, du genre system.

Ludo66000


Mihamina (R12y) Rakotomandimby
Le #148598
GLudovic66000 -
C'est l'équivalent de grep pour le remplacement


grep remplace?

Publicité
Poster une réponse
Anonyme