On Sat, 09 Dec 2006 12:42:39 +0100 gegetel <[EMAIL PROTECTED]> wrote:
> Bonjour, > Dans un fichier texte quelconque, il est possible avec sed de remplacer > une chaîne de caractères par une autre, voire une expression rationnelle > par une chaîne de caractères. Par exemple : > sed -i 's/\/mnt.*\/sauv/\/mnt\/removable-3\/sauv/' fichier > remplacera dans fichier l'unique chaîne de caractères « > /mnt/chemin_quelconque/sauv » par « /mnt/removable-3/sauv ». > Mais comment mettre dans la partie droite une chaîne récupérée avec grep > et awk dans un autre fichier et contenue dans une variable ? J'ai fait > des essais avec toutes sortes de parenthèses et d'apostrophes à partir de : > sed -i 's/\/mnt.*\/sauv/$path\/sauv/' fichier > mais sed ne fait que recopier littéralement « $path/sauv ». > Et d'après le manuel je crois comprendre que sed ne fait jamais > d'interprétation dans la partie droite. > Comment faire ? > un exemple valant mieux qu'une longue explication: [EMAIL PROTECTED] ~]$ var=foo [EMAIL PROTECTED] ~]$ echo foo bar | sed 's/bar/$var/' foo $var [EMAIL PROTECTED] ~]$ echo foo bar | sed "s/bar/$var/" foo foo [EMAIL PROTECTED] ~]$ la différence est dans les '' et "" autre chose, avec sed on peut choisir son délimiteur. si l'expression contient des '/' on peut utiliser '@' (ou '#' '+' etc) comme délimiteur et ainsi se passer des '\' ou risquer d'en oublier un. s@/foo/bar@/bar/foo@ est plus lisible que s/\/foo\/bar/\/bar\/foo/ bye jipe
========================================= Vous souhaitez acquerir votre pack ou des services Mandriva? Rendez-vous sur "http://store.mandriva.com". Rejoignez le club Mandriva : http://club.mandriva.com =========================================
