remplacer une chaine de caractère par une autre dans des fichiers via un script
PROBLEMATIQUE :
je veux remplacer une chaine de caractère, par exemple N44024F4T54 par N44024F2T100 dans des fichiers.
SOLUTION :
je crée un script exemple toto.x que j'appellerai en passant comme argument le nom du fichier à traiter.
dans toto.x j'ai les lignes suivantes:
je veux remplacer une chaine de caractère, par exemple N44024F4T54 par N44024F2T100 dans des fichiers.
SOLUTION :
je crée un script exemple toto.x que j'appellerai en passant comme argument le nom du fichier à traiter.
dans toto.x j'ai les lignes suivantes:
LIGNES DANS LE SCRIPT | EXPLICATIONS |
export tmp=/tmp/EB.$$ | $$ sera égal au numéro de process de la session ce qui permet de gérer le multi utilisateur. On défini la variable "tmp" comme étant le nom du fichier temporaire unique. |
RE="[nN]44024[fF]4[tT]54" | On défini RE |
grep "$RE" $1 > /dev/null 2>&1 || { | on recherche la valeur de RE dans le fichier passé en argument |
echo $1 ne contient pas $RE | On prévient que le fichier ne sera pas traité |
exit 0 | On sort du script |
} | Fin du test |
sed "s/$RE/N44024F2T100/g" $1 > $tmp && mv $tmp $1 | On remplace la valeur dans RE par N44024F2T100 sur toute la ligne (/g) dans le fichier passé en argument ($1) et on envoi le résultat dans le fichier temporaire unique. Si tout c'est bien passé on remplace le fichier passé en argument par le fichier temporaire unique. |