suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Linux Bash: HTML-Tabellendatenblöcke einfach löschen

Ich habe eine HTML-Datei, die ich mit einem Bash-Skript verarbeite, und möchte leere Tabellen entfernen. Die Datei wird aus der SQL-Anweisung generiert, enthält jedoch Header, wenn kein Datensatz gefunden wird. Ich möchte den Titel löschen, für den kein Datensatz gefunden wurde.

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

Ich habe versucht, die leere Tabelle mit einer Kombination aus grep und sed zu löschen. Ich kann diese Aufgabe erfüllen, wenn die Tabellen die gleiche Anzahl von Spalten enthalten. Ich habe jetzt einige Probleme, weil meine Tabellen eine unterschiedliche Anzahl von Spalten haben.

Wenn die Tabelle die gleiche Anzahl von Spalten hat, kann ich anhand der Überschriften eine Schleife durchlaufen, zählen und dann löschen. Da die Anzahl der Spalten unterschiedlich ist, funktioniert dies nicht.

P粉787806024P粉787806024286 Tage vor601

Antworte allen(1)Ich werde antworten

  • 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

    Antwort
    0
  • StornierenAntwort