Saya punya beberapa ratus file kode sumber html. Saya perlu mengekstraksi konten <div>
elemen tertentu dari masing-masing file ini jadi saya akan menulis skrip untuk mengulangi setiap file. Struktur elemennya seperti ini:
<div id='the_div_id'>
<div id='some_other_div'>
<h3>Some content</h3>
</div>
</div>
Adakah yang bisa menyarankan metode dimana saya dapat mengekstrak div the_div_id
dan semua elemen anak dan konten dari file menggunakan baris perintah linux?
sumber
hxselect
lebih pilih-pilih tentang format input daripadapup
. Misalnya, saya mendapatkanInput is not well-formed. (Maybe try normalize?)
denganhxselect
manapup
hanya parsing itu.Coba
pup
, alat baris perintah untuk memproses HTML. Sebagai contoh:sumber
Berikut skrip Perl yang belum teruji yang mengekstraksi
<div id="the_div_id">
elemen dan kontennya menggunakanHTML::TreeBuilder
.Jika Anda alergi terhadap Perl, Python menderita
HTMLParser
.PS Jangan coba-coba menggunakan ekspresi reguler. .
sumber
Berikut adalah Ex one-liner untuk mengekstrak bagian itu dari setiap file:
Untuk menyimpan / mengganti di tempat, ubah
-cqa!
menjadi-cxa
dan hapus%p
bagian. Untuk rekursif, pertimbangkan menggunakan globbing (**/*.html
).Pada dasarnya untuk setiap buffer / file (
bufdo
), ia melakukan tindakan berikut:/pattern
- temukan polanyanorm
- mulai mensimulasikan penekanan tombol Vi normaln
- lompat ke pola berikutnya (diperlukan dalam mode Ex)vatd
- hapus bagian tag luar yang dipilih (lihat: beralih di antara tag html )ggdG
- hapus seluruh buffer (setara dengan:%d
)"2p
- Tempel ulang teks yang sudah dihapus sebelumnyaMungkin tidak terlalu efisien dan bukan POSIX (
:bufdo
), tetapi harus bekerja.sumber