Mam kilkaset plików kodu źródłowego HTML. Muszę wyodrębnić zawartość określonego <div>
elementu z każdego z tych plików, więc mam zamiar napisać skrypt, który przejdzie przez każdy plik. Struktura elementu wygląda następująco:
<div id='the_div_id'>
<div id='some_other_div'>
<h3>Some content</h3>
</div>
</div>
Czy ktoś może zasugerować metodę, za pomocą której mogę wyodrębnić div the_div_id
oraz wszystkie elementy potomne i zawartość z pliku przy użyciu wiersza polecenia systemu Linux?
źródło
hxselect
jest bardziej wrażliwy na format wejściowy niżpup
. Na przykład, ja dostajęInput is not well-formed. (Maybe try normalize?)
zhxselect
którympup
właśnie analizowania go.Wypróbuj
pup
narzędzie wiersza polecenia do przetwarzania HTML. Na przykład:źródło
Oto nieprzetestowany skrypt Perla, który wyodrębnia
<div id="the_div_id">
elementy i ich zawartość za pomocąHTML::TreeBuilder
.Jeśli masz alergię na Perla, Python ma
HTMLParser
.PS Nie próbuj używać wyrażeń regularnych. .
źródło
Oto Ex jeden wiersz, aby wyodrębnić tę część z każdego pliku:
Aby zapisać / zamienić na miejscu, zmień sekcję
-cqa!
na-cxa
i usuń%p
. W przypadku rekurencyjności rozważ użycie globbing (**/*.html
).Zasadniczo dla każdego bufora / pliku (
bufdo
) wykonuje następujące działania:/pattern
- znajdź wzórnorm
- zacznij symulować normalne naciśnięcia klawiszy Vin
- wskocz do następnego wzoru (wymagany w trybie Ex)vatd
- usuń wybraną sekcję zewnętrznego znacznika (patrz: przeskakiwanie między znacznikami HTML )ggdG
- usuń cały bufor (odpowiednik:%d
)"2p
- ponownie wklej poprzednio usunięty tekstByć może niezbyt wydajny i nie POSIX (
:bufdo
), ale powinien działać.źródło