Exercice Linux corrigé chercher un motif dans un fichier avec egrep

#!/bin/bash
if [ $# lt 3 ] ; then # Il faut au moins trois arguments
echo erreur : remplace 'ere' 'nchaine' file..
exit 1
fi
ERE="$1" # le premier arg est l'expression
REPLACE="$2" # le deuxieme arg est la nouvelle chaine
SEP='%' # nous utiliserons % comme separateur
# (le caractere / pourra apparaitre dans l'expression)
shift; shift
# maintenant, $1 contient le premier nom de fichier
# faire une boucle sur tous les fichiers passes
# en arguments
while [ z$1 != z ] # teste si $1 n'est pas vide
# (encore un fichier a traiter?)
do
if [ f $1 ] ; then # $1 est un fichier
sed "s${SEP}${ERE}${SEP}${REPLACE}${SEP}g" $1 \
>/tmp/replace.$$
# le resultat est dirige vers un fichier
# temporaire qui est recopie sur le fichier
# d'origine si sed a effectue au moins une modification
[ $? = 0 ] && cat /tmp/replace.$$ >$1
else
echo $1 n\'est pas un fichier, ignore
# $1 peut etre un repertoire
fi
shift # pour passer au suivant, decaler les
# arguments d'un pas vers la gauche
done # et passer au suivant : fin de la boucle.
rm f /tmp/replace.$$
# faire le menage quand tout est fini

 

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *