#1 Le 09/09/2008, à 01: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, à 19:11)
Hors ligne
#2 Le 09/09/2008, à 08: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, à 08: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, à 10: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, à 10: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, à 11: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