Programmation.shell : Insérer un contenu dans un modèle
Posté par MilkaJinka () le 03 avril 2008Après plusieurs tentatives infructueuses de ma part, je viens quémander votre aide sur un petit script pour un site statique.
Je voudrais automatiser l'inclusion du contenu (juste le corps du texte avec les balises qui vont bien) dans un modèle de page, et en gardant le modèle dans un seul fichier.
Au final, mon fichier source/divers/truc.txt devrait donner la page divers/truc.html. En gros, il y aurait dans le modèle un gros {CONTENU} à remplacer par le contenu effectif des fichiers. Et c'est là que je bloque. J'ai eu beau tripatouiller find et sed, je n'y suis pas arrivé... Un petit coup de pouce pour que je m'améliore ?
> Lire le message (7 commentaires, moyenne: 2,4).
Vous avez demandé le commentaire #919571.



Site ou site
Si ton site est un site web qui tourne sous Apache, il existe un module qui fait cela très bien, c'est mod_include http://httpd.apache.org/docs/2.2/mod/mod_include.html
Il vient par défaut depuis des lustres, il est beaucoup plus léger que PHP et bien documenté.
Si tu veux pré-générer les pages; cpp est le préprocesseur C, il est également facile a utiliser et très largement distribué sur de très nombreuses plateformes.
[^]Re: Site ou site
Comme je l'ai écrit dans le commentaire plus haut, je souhaite faire le truc le plus minimal et le plus générique possible, qui donne des pages HTML pur jus faciles à gérer, qu'on peut facilement faire servir par un mini-serveur http sur une vieille bécane ou de l'embarqué.
Accessoirement c'est pour m'améliorer en shell ^^
Persiste.
[^]Re: Site ou site
ligne=$(grep -n '{CONTENU}' truc.html | cut -d ':' -f 1)
renvoie le numéro de la ligne contenant la balise
head -n $(($ligne - 1)) truc.html > partie1.html
la première partie
sed -ne '/{CONTENU}/,$ p' truc.html | tail -n +2 > partie2.html
la deuxième partie
les 3 cat pour reconstituer:
cat partie1.html truc.txt partie2.html > truc.html
sinon après y'a perl qui est plus à même de faire ça rapidement/facilement...