如何从 HTML 文件中删除部分行

如何从 HTML 文件中删除部分行

我有一个文件,events.html包含类似的行(以及许多其他行):

<td class="EventDate">2021-08-06 12:36:34</td>

其中每行中的日期和时间字符串都不同。
在这些行中有仅有的 class="EventDate"
喜欢从每一个这样的行中删除仅有的时间字符串。

附加信息:

  • 系统是Debian 9.13 64位
  • 文件长 38kb
  • 大约有 100 条记录,每条记录都包含类似于
    <td class="EventDate">2021-08-06 12:36:34</td>
    每行的日期和时间字符串都不同!
  • 文件在末尾处仅包含一行(例如!)
    日期和时间:[2021-08-08 14:16:54 UTC]

出于安全原因,无法发布整个文件。

我既不是 IT 专业人士,也不是 Linux 专家
,但能够执行各种要求较高的任务。

答案1

使用 xmlstarlet 来编辑它的文件,用 a 更新值X路径表达式:

xmlstarlet ed -u '//td[@class="EventDate"]' -x 'substring-before(.," ")' events.html

添加-L以就地执行编辑,而不是将结果写入标准输出。

前任。给定

$ cat events.html 
 <table>
  <tr>
    <td>Cell A</td>
    <td class="EventDate">2021-08-06 12:36:34</td>
  </tr>
  <tr>
    <td>Cell C</td>
    <td class="OtherDate">2021-08-06 12:36:34</td>
  </tr>
</table>

然后

$ xmlstarlet ed -O -u '//td[@class="EventDate"]' -x 'substring-before(.," ")' events.html 
<table>
  <tr>
    <td>Cell A</td>
    <td class="EventDate">2021-08-06</td>
  </tr>
  <tr>
    <td>Cell C</td>
    <td class="OtherDate">2021-08-06 12:36:34</td>
  </tr>
</table>

相关内容