Rumah > Soal Jawab > teks badan
Saya mempunyai fail html yang saya sedang memproses menggunakan skrip bash dan ingin mengalih keluar jadual kosong. Fail dijana daripada pernyataan sql tetapi termasuk pengepala apabila tiada rekod ditemui. Saya mahu memadamkan tajuk yang tiada rekod ditemui.
<table border="1"> <caption>Table with data</caption> <tr> <th align="center">type</th> <th align="center">column1</th> <th align="center">column2</th> <th align="center">column3</th> <th align="center">column4</th> </tr> Data rows exists here </table> <table border="1"> <caption>Empty Table To Remove</caption> <tr> <th align="center">type</th> <th align="center">column1</th> <th align="center">column2</th> <th align="center">column3</th> <th align="center">column4</th> <th align="center">column5</th> <th align="center">column6</th> <th align="center">column7</th> </tr> </table> <table border="1"> <caption>Table with data</caption> <tr> <th align="center">type</th> <th align="center">column1</th> <th align="center">column2</th> <th align="center">column3</th> <th align="center">column4</th> </tr> Data rows exists here </table>
Saya cuba menggunakan gabungan grep dan sed untuk memadamkan jadual kosong. Saya dapat menyelesaikan tugas ini apabila jadual mengandungi bilangan lajur yang sama. Saya menghadapi beberapa masalah sekarang kerana jadual saya mempunyai bilangan lajur yang berbeza.
Apabila jadual mempunyai bilangan lajur yang sama, saya dapat menggelung berdasarkan pengepala, mengira dan kemudian memadam. Oleh kerana bilangan lajur berbeza, ini tidak berfungsi.
P粉2427419212024-04-03 00:19:04
Seperti ini, menggunakan xmlstarlet dan xpath:
$ xmlstarlet format -H file.html | sponge file.html $ xmlstarlet ed -d '//table[./caption/text()="Empty Table To Remove"]' file.html
type | column1 | column2 | column3 | column4 |
---|
type | column1 | column2 | column3 | column4 |
---|
Untuk mengedit di sed -i
dsb. gunakan
xmlstarlet edit -L ...
Tiada penjelasan, tetapi jangan gunakansed
或regex
来解析HTML/XML