удалить HTML-столбцы таблицы с помощью sed - PullRequest
0 голосов
/ 25 мая 2018

Как удалить HTML-столбцы таблицы (3-й и 4-й столбцы) с помощью sed?

<td>test1</td>
<td>test2</td>
<td></td>
<td></td>
<td>test5</td>

1 Ответ

0 голосов
/ 25 мая 2018

Один из правильных способов сделать это, например, использовать XSLT:

ВХОД HTML:

more table.html 
<html>
        <head>
                <style>
                table, td, th {
                    border: 1px solid black;
                }

                table {
                    border-collapse: collapse;
                    width: 100%;
                }

                th {
                    height: 50px;
                }
                </style>
        </head>
        <body>
                <h1>My First Heading</h1>
                <p>My first paragraph.</p>

                <table style="width:100%">
                  <tr>
                        <th>Firstname</th>
                        <th>Lastname</th> 
                        <th>remove</th> 
                        <th>remove</th> 
                        <th>Age</th>
                  </tr>
                  <tr>
                        <td>Jill</td>
                        <td>Smith</td> 
                        <td>remove</td>
                        <td>remove</td>
                        <td>50</td>
                  </tr>
                  <tr>
                        <td>test1</td>
                        <td>test2</td>
                        <td>remove</td>
                        <td>remove</td>
                        <td>test5</td>
                  </tr>
                </table>
        </body>
</html>

XSLT:

more table_conv.xslt 
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html" indent="yes" />
    <xsl:strip-space elements="*"/>

    <!-- copy all elements as-is -->
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()" />
        </xsl:copy>
    </xsl:template>
    <!-- for the following elements 3rd and 4th column and title, don't do anything, they will be ignored -->
    <xsl:template match="//td[3]|//td[4]|//th[3]|//th[4]"/>


</xsl:stylesheet>

CMD:

xsltproc --html -o table2.html table_conv.xslt table.html

ВЫХОД HTML:

more table2.html                                                                                                               
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style>
                table, td, th {
                    border: 1px solid black;
                }

                table {
                    border-collapse: collapse;
                    width: 100%;
                }

                th {
                    height: 50px;
                }
                </style>
</head>
<body>
<h1>My First Heading</h1>
<p>My first paragraph.</p>
<table style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>test1</td>
<td>test2</td>
<td>test5</td>
</tr>
</table>
</body>
</html>

Пояснения:

Смотрите комментарии!

ДО:

before

ПОСЛЕ: after

...