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" {} \;