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.
像这样,使用 xmlstarlet 和 xpath:
要在
sed -i
等位置进行编辑,请使用没有解释,但是不要使用
sed
或regex
来解析HTML/XML