2009-10-27 7 views
0

Je cherche un moyen d'attraper un morceau de balisage qui est dans un 1000+ fichiers html publiés sur des serveurs UNIX (fonctionnant via Apache) et remplacer le balisage par des nœuds vides ou un balisage html alternatif.Comment remplacer le balisage dans les fichiers html stockés sur des serveurs Unix/Solaris?

ex:

Trouver

<div id="someComponent"> .....{a bunch of interior markup} .... </div>

Remplacer avec {vide}

ex 2:

Trouver </div></body>

Remplacer </div>{some HTML markup needed here}</body>

+0

encore mieux de donner un extrait de données d'entrée réelles. – ghostdog74

+0

le code réel est sensible. C'est un bloc assez important de HTML qui est répété dans tous les fichiers HTML qui ont été publiés. C'est exactement la même chose dans chaque fichier, mais il doit être déplacé vers un emplacement différent dans le fichier publié. Je peux le faire au niveau de notre CMS mais cela implique de republier CHAQUE page pour plusieurs sites web. Depuis que j'ai accès au serveur Web hébergeant les fichiers HTML publiés, je cherche un moyen de modifier les versions publiées pour les mettre à jour. – nopuck4you

Répondre

1

S'il est vraiment simple (pas d'analyse syntaxique nécessaire, le balisage bien connu et non l'un dans l'autre), la plus rapide devrait être:

(En zsh ou Bash)

perl -pi -e 's#<div class="toto">.*?</div>#<span>new content</span>#g' /path/to/files/**/*.html(.) 

Cela devrait faire l'astuce pour remplacer tous entre tous ...<div class="toto">.....</div>... par ...<span>newcontent</span>...

Mais attention, il ne fonctionnera pas pour ...<div class="toto"> ... <div class="toto"> ... </div> ... </div> ....

+0

Je vais essayer l'approche recommandée ci-dessus et de revenir à vous une fois que je l'ai testé dans notre environnement de développement. – nopuck4you

+0

Est-ce que le HTML de recherche et le HTML de remplacement peuvent être tirés des dossiers au lieu d'inline? – nopuck4you

1

Une façon de le faire: utilisez Python avec BeautifulSoup pour analyser le fichier HTML, le remplacer et le réécrire.

+1

D'accord. Normalement, je suggère 'perl -pi -e', mais il semble que vous ayez besoin de quelque chose qui soit conscient de la structure du HTML. –

0

Si le balisage est écrit de la même manière dans tous les fichiers, sed ou perl sera beaucoup plus rapide que BeautifulSoup ou similaires, mais il est aussi plus difficile de faire flexible en termes de différentes façons d'exprimer le même balisage HTML forme de texte. Avez-vous un exemple plus concret du type de balisage que vous recherchez, et idéalement, comment cela peut-il varier d'un fichier à l'autre? Où dans le fichier sera-t-il? Aussi, est-ce que c'est correct de justifier ou de ranger le HTML dans le processus si nécessaire? Oh, et vous exécutez quelque chose sur le serveur (s), ou avez-vous besoin de code pour spider le serveur pour récupérer les fichiers HTML pour le traitement?

Questions connexes