petit mémo sur comment remplacer une chaine de caractère dans un fichier sous Linux.
Méthode sans édition: sed
sed -i -e "s/machaines1/machaine2/g" fichier
si la chaîne contient des caractères spéciaux, on devra les échapper avec ‘\’
exemple:
sed -i -e "s/\#machaines1/\#machaine2/g" fichier
Méthode en édition: vi
édition du fichier avec la commande vi
vi fichier
puis dans l’éditeur saisir:
:%s/machaine1/machaine2/
ce qui donne en image
Bonjour,
Ce petit mémo est bien pratique. Néanmoins, quand je le teste, il m’affiche seulement le résultat mais ne modifie pas mon fichier de départ. Dois-je rajouter autre chose pour qu’il le fasse automatiquement dans mon fichier sans que je ne lui précise le nom du fichier?
Voici ce que je teste:
find . -name « * » -exec sed -e ‘s#/data/dmc/#/data/DMC/#g’ {} \;
Je souhaite remplacer dans tous les fichiers de tous les répertoires et sous répertoires. Je ne peux donc pas préciser mon nom de fichier en sortie.
Merci d’avance.
Laurent
Bonjour Deneau,
ce n’est pas très clair car tu ne dis pas par quoi tu veux remplacer. En ce qui concerne ta commande, si je comprend bien tu veux remplacer dmc par DMC,
pour moi, ça ne va pas :
[code lang= »shell »]
sed -i -e ‘s#/data/dmc/#/data/DMC/#g’
[/code]
remplace cette chaîne par :
[code lang= »shell »]
sed -i -e ‘s/data\/dmc/data\/DMC/g’
[/code]
bonjour
voila la bonne commande pour changer
sed -i « s/\data/dmc/\data/DMC/g » file_to_change
pour le faire dans toute unestructure defchie d une extention donne .ext a partir de la racine de cet structure (repertoir top):
find . -name « *.ext » -type f -exec sed -i « s/\data/dmc/\data/DMC/g » {} \;
bon courae
: