Bonjour à tous.

J'ai un problème plus que tordu...

Voilà, j'ai un fichier fichier1 dont le contenu peut ressembler à ca :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
truc __var__ chose
 
      machin __var2__ bidule


J'ai une variable var qui vaut "valeur1" et une variable var2 qui vaut "valeur2"


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
var1=valeur1
var2=valeur2

L'idée, c'est donc de copier mon fichier1 vers fichier2 et de remplacer dans fichier2 __var__ par le contenu de $var et __var2__ par le contenu de $var2...


Pour l'instant, j'arrive à faire ca :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
cat fichier1 | sed 's/__\(.*\)__/${\1}/g' >fichier2

Ce qui donne un fichier2 qui ressemble à :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
truc ${var1} chose
 
      machin ${var2} bidule


Le résultat attendu serait plutôt :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
truc valeur1 chose
 
      machin valeur2 bidule

A préciser bien sûr que si j'ai, dans fichier1, le motif __supervariable__, il doit être remplacé par le contenu de $supervariable...


La substitution des variables fonctionne avec le code suivant :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
while read i; do
echo $i | eval echo $(sed 's/__\(.*\)__/${\1}/g') >>fichier2
done <fichier1

Le souci, c'est que mon fichier2 s'en retrouve amputé de toutes les indentations... J'imagine que c'est le eval qui est responsable de cette amputation...

Et du coup, là, je bloque... J'ai essayé avec awk et du gensub, mais je suis confronté aux mêmes problèmes finalement...


Si quelqu'un a une idée, c'est avec grand plaisir que j'accueillerais sa solution


Merci d'avance à tous.


Deupac.