Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/09/2008, à 02:03

C'est Moi

[Résolu]Scripte:remplacer une chaine de caractères par une autre en

Hi,
ma question est assez simple voilà ou j'en suis :

./remplacer.awk vieux="ancienne chaine" neuf="nouvelle" fichier-à-modifier > fichier-modifié

avec le code de remplacer.awk

#! /usr/bin/awk -f

{ sub(vieux, neuf );print }

Mon souci, c'est que je voudrais que le fichier-modifié écrase le fichier-à-modifier, autrement dit qu'il ait le même nom. Mais si je fais

./remplacer.awk vieux="ancienne chaine" neuf="nouvelle" nom-fichier > nom-fichier

le fichier "nom-fichier" est vide... PK et comment résoudre ce problème

Dernière modification par C'est Moi (Le 09/09/2008, à 20:11)

Hors ligne

#2 Le 09/09/2008, à 09:16

claudius01

Re : [Résolu]Scripte:remplacer une chaine de caractères par une autre en

Bonjour,

Il suffit de passer par un fichier temporaire, puis le déplacer:

./remplacer.awk vieux="ancienne chaine" neuf="nouvelle" nom-fichier > /tmp/nom-fichier && mv /tmp/nom-fichier .

Fonctionne si  '/remplacer.awk' retourne 0 (sinon le && ... ne sera pas exécuté)


Claudius, A+

Hors ligne

#3 Le 09/09/2008, à 09:18

Totor

Re : [Résolu]Scripte:remplacer une chaine de caractères par une autre en

Es-tu "obligé" d'utiliser awk ? awk ne te permettra pas de remplacer dans le fichier. il te faudra passer par un fichier temporaire.

sed te permets de le faire :

sed -i "s/<ancien_texte>/<nouveau_texte>/g' <fichier>

l'option -i permet de remplacer directement dans le fichier.


-- Lucid Lynx --

Hors ligne

#4 Le 09/09/2008, à 11:25

C'est Moi

Re : [Résolu]Scripte:remplacer une chaine de caractères par une autre en

merci pour vos réponse...

non je suis pas obligé d'employer awk, c'est juste qu'il me paraissait plus performant, et comme je ne connaissait ni l'un ni l'autre...

je vais tester la solution avec sed.

Hors ligne

#5 Le 09/09/2008, à 11:36

C'est Moi

Re : [Résolu]Scripte:remplacer une chaine de caractères par une autre en

Merci ça fonctionne !

Avant que je mette résolu dans le titre, j'aimerais juste savoir si il y a des caratères "protégés", car j'ai de nombreux fichiers .tex qui contiennent toutes sortent de symboles : +*\&$[]{}()%ç@ et le but de la commande serait de modifier tous les fichiers .tex en même temps et si possible sans affecter les formules mathématiques, chimiques ou physiques...

Hors ligne

#6 Le 09/09/2008, à 12:46

Totor

Re : [Résolu]Scripte:remplacer une chaine de caractères par une autre en

ben si ne demandes pas à ce qu'ils soient modifiés, ils ne le seront pas !


-- Lucid Lynx --

Hors ligne