AENet

Blog & espace web du serveur

Connexion

Remplacement de masse

ViewDoc

Source de l'article Remplacer un chaine de caractère avec la commande sed

Voici une petite astuce bien pratique qui permet de changer une chaîne de caractères par une autre, contenue dans un fichier texte. Tout ceci se réalise en une seule ligne de commande, grâce à sed.

Voici un exemple d'utilisation :

sed -i -e "s/chaines1/chaine2/g" fichier

A noter que si la chaîne contient des caractères spéciaux, on devra les échapper avec '/'. Voici un exemple oû l'on remplace "/home" par "/tmp" :

sed -i -e "s//home//tmp/g" fichier

Si on a besoin de remplacer une chaîne par une autre pour toute une liste de fichiers contenue dans un répertoire, on pourra utiliser ce petit script basé sur le même principe :

#!/bin/bash
for file in *.txt
do
echo "Traitement de $file ..."
sed -i -e "s/chaine1/chaine2/g" "$file"
done

Ce dernier va :
1. établir la liste de tous les fichiers dont l'extension est .txt
2. puis effectuer le remplacement

Edit : une autre méthode donnée en commentaire qui utilise la commande find et qui permet de traiter des sous-dossier en plus :

find . -name "*.txt" -type f -exec sed -i "s/chaine1/chaine2/g" {} \;