J'ai quelques centaines de fichiers de code source html. J'ai besoin d'extraire le contenu d'un <div>
élément particulier de chacun de ces fichiers, donc je vais écrire un script pour parcourir chaque fichier. La structure de l'élément est la suivante:
<div id='the_div_id'>
<div id='some_other_div'>
<h3>Some content</h3>
</div>
</div>
Quelqu'un peut-il suggérer une méthode par laquelle je peux extraire le div the_div_id
et tous les éléments enfants et le contenu d'un fichier en utilisant la ligne de commande linux?
la source
hxselect
est plus pointilleux sur le format d'entrée quepup
. Par exemple, je reçoisInput is not well-formed. (Maybe try normalize?)
avechxselect
oùpup
vient l' analyser.Essayez
pup
, un outil en ligne de commande pour le traitement HTML. Par exemple:la source
Voici un script Perl non testé qui extrait les
<div id="the_div_id">
éléments et leur contenu à l'aideHTML::TreeBuilder
.Si vous êtes allergique à Perl, Python en a
HTMLParser
.PS N'essayez pas d'utiliser des expressions régulières. .
la source
Voici Ex one-liner pour extraire cette partie de chaque fichier:
Pour enregistrer / remplacer sur place, passez
-cqa!
à-cxa
et supprimez la%p
section. Pour la récursivité, envisagez d'utiliser globbing (**/*.html
).Fondamentalement, pour chaque tampon / fichier (
bufdo
), il effectue les actions suivantes:/pattern
- trouver le motifnorm
- commencer à simuler les frappes Vi normalesn
- passer au motif suivant (requis en mode Ex)vatd
- supprimer la section de balise externe sélectionnée (voir: sauter entre les balises html )ggdG
- supprimer tout le tampon (équivalent à:%d
)"2p
- recollez le texte précédemment suppriméPeut-être pas très efficace et pas POSIX (
:bufdo
), mais cela devrait fonctionner.la source