lundi 19 avril 2010

bash :script de remplacement

Voici un petit script utile, pour effectuer des remplacements de masse dans des fichiers de configuration ... (testé sous cygwin)

voici un super lien : un super cours

a noter:
que le premier caractère après le sed est son délimiteur .. du coup, ici c'est très pratique car les slash sont très embêtant .. ici j'ai choisi @ ...

et le if en bash qui s'effectue simplement avec $? == 0 (teste si la dernière commande s'est bien déroulée)

une astuce simple pour tester les expressions arithmétiques :

echo $(( 5 > 7))
1





#!/bin/bash

chaineATrouver=/5
chaineARemplacer=/3

files=`find . -name "rebuild.*" `
echo "remplacement de la chaine [${chaineATrouver}] par [${chaineARemplacer}]"
for file in ${files}
do
echo "traitement du fichier [${file}]"
sed -e "s@${chaineATrouver}@${chaineARemplacer}@g" ${file} > ${file}.new
if [ $? == 0 ]
then
if [ -e "${file}.new" ]
then
mv "${file}" "${file}.old"
mv "${file}.new" "${file}"
else
echo "le fichier [${file}.new]n'existe pas"
fi
else
rm -v *.new
fi
done

echo 'fin du traitement'

Aucun commentaire:

Enregistrer un commentaire