Le 09/12/06, gegetel a écrit :

> 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 ?

)$ cat a.txt
oh du texte
/mnt/blabla/sauv
foo et bar sont dans un bateau

)$ cat toto.sh
#!/bin/bash

fich_in=a.txt

rep=removable

sed "s;/mnt/.*/sauv;/mnt/$rep/sauv;" "$fich_in"

)$ ./toto.sh
oh du texte
/mnt/removable/sauv
foo et bar sont dans un bateau

Sous réserve de corrections par Jipe ;-)

-- 
Christophe
http://ch4tn01r.free.fr/blog

=========================================
Vous souhaitez acquerir votre pack ou des services Mandriva?
Rendez-vous sur "http://store.mandriva.com";.
Rejoignez le club Mandriva : http://club.mandriva.com
=========================================

Répondre à