搜尋

首頁  >  問答  >  主體

Linux Bash:輕鬆刪除 HTML 表資料塊

我有一個使用 bash 腳本處理的 html 文件,並且想要刪除空表。該檔案是從 sql 語句產生的,但在未找到記錄時包含表頭。我想刪除沒有找到記錄的標題。

<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>

我嘗試使用 grep 和 sed 的組合來刪除空表。當表格包含相同數量的列時,我能夠完成此任務。我現在遇到了一些問題,因為我的表格的列數不同。

當表具有相同數量的列時,我能夠根據標題進行循環,進行計數,然後刪除。由於列數不同,這不起作用。

P粉787806024P粉787806024245 天前499

全部回覆(1)我來回復

  • P粉242741921

    P粉2427419212024-04-03 00:19:04

    像這樣,使用

    $ xmlstarlet format -H file.html | sponge file.html
    $ xmlstarlet ed -d '//table[./caption/text()="Empty Table To Remove"]' file.html 
    
    
    
      
        
       
       Data rows exists here
       
      
    Table with data
    typecolumn1column2column3column4
    Data rows exists here
    Table with data
    typecolumn1column2column3column4

    要在 sed -i 等位置進行編輯,請使用

    xmlstarlet edit -L ...

    沒有解釋,但不要使用sedregex來解析HTML/XML

    回覆
    0
  • 取消回覆