Linux Bash: HTML-Tabellendatenblöcke einfach löschen
P粉787806024
P粉787806024 2024-04-02 09:13:43
0
1
549

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粉787806024
P粉787806024

Antworte allen(1)
P粉242741921

像这样,使用

$ 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
type column1 column2 column3 column4
Data rows exists here
Table with data
type column1 column2 column3 column4

要在 sed -i 等位置进行编辑,请使用

xmlstarlet edit -L ...

没有解释,但是不要使用sedregex来解析HTML/XML

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage