我有一个文件,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>