remplacer une variable par une autre

remplacer une variable par une autre - Shell/Batch - Programmation

Marsh Posté le 15-10-2007 à 19:12:07    

voila, jai un fichier latex comme suit
 
texte.tex
 

Code :
  1. \begin{document}
  2. Par exemple, en écrivant une première ligne, on peut se rendre compte \footnote{note 1} de la création automatique \footnote{note 2} des notes en bas de $
  3. On peut aussi sauter des lignes pour voir un peu ce que cela donne \footnote{note 3}.
  4. Mais le plus important reste de pouvoir insérer \footnote{note 4} les notes facilement à partir du document initial \ldots
  5. \end{document}


 
et un autre fichier note.txt
 

Code :
  1. tout le monde peut
  2. vive latex
  3. et pas seulement
  4. le plus facilement du monde


 
jaimerai remplacer chaque note dans le 1er fichier par la ligne correspondante du 2eme (note 1 = ligne 1 etc ...)
 
jai 2 variables $note = \footnote{note $x} et une variable $temp ki saisie la ligne correspondante a $x
 

Code :
  1. x=1
  2. for ((i = 4; i >= 0; i -= 1))
  3. do
  4.         #syntaxe des notes a remplacer
  5.         note="\\foonote{note $x}"
  6.         #mets la ligne x dans une variable "temp"
  7.         temp=$(awk 'NR=='$x'{print}' notes.txt)
  8.         #fonction de remplacement
  9.         awk '{ sub(/'"$note"'/,"$temp" );print}' texte.tex
  10.         #incrementation de la variable
  11.         x=`expr $x + 1`
  12. done


 
la fonction sub de awk ne marche pas et je ne voi pas comment remplacer la variable note par la variable temp correspondante ...
help please !

Reply

Marsh Posté le 15-10-2007 à 19:12:07   

Reply

Marsh Posté le 15-10-2007 à 22:54:35    

je connais pas la fonction sub, mais tu peux utiliser sed:

sed -i "s/$note/$temp/" texte.tex

Reply

Marsh Posté le 17-10-2007 à 19:13:03    

nikhun a écrit :

la fonction sub de awk ne marche pas et je ne voi pas comment remplacer la variable note par la variable temp correspondante ...
help please !


Essaye de modifier la valeur de ta variable note :

       #syntaxe des notes a remplacer
        note="\\foonote\{note $x\}"


Voici une autre solution avec une commande awk :

awk '
NR==FNR {
   texte = texte (texte ? "\n" : "" ) $0;
   next;
}
{
   gsub("\\\\footnote\\{note " FNR "\\}", $0, texte);
}
END {
   print texte;
}
' texte.tex note.txt


---------------
Jean Pierre.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed