使用Bash删除HTML表格中无可见内容的<td>行
移除HTML表格中无可见内容的行
AWK解决方案
针对你的需求,用AWK可以精准过滤掉无可见内容的行,执行以下命令即可:
awk ' /^[[:space:]]*<td/ { content = $0 # 移除所有HTML标签 gsub(/<[^>]+>/, "", content) # 清除所有空白字符(含普通空格和HTML非断空格) gsub(/[[:space:]]|\xC2\xA0/, "", content) # 内容为空则跳过该行 if (length(content) == 0) next } # 输出所有保留的行 1' table.html > cleaned_table.html
命令逻辑说明:
- 仅对以任意空格开头的行进行处理
- 先移除该行内所有HTML标签,提取纯文本内容
- 清除所有空白字符(包括键盘空格和HTML里的
) - 若处理后文本长度为0,说明无可见内容,直接跳过该行;否则保留
- 最后输出所有未被过滤的行,其他非行保持原样
输入输出示例
输入:
<table> <tbody> <tr style="height: 17px;"> <td style="width: 120.078px; height: 17px;" align="RIGHT" valign="TOP"><span style="font-size: 10pt; font-family: verdana, geneva, sans-serif;"><strong>CEO </strong></span></td> <td style="width: 438.922px; height: 49px;" rowspan="2" align="LEFT" valign="TOP"><span style="font-size: 10pt; font-family: verdana, geneva, sans-serif;"><strong> Name<br/></strong> E-Mail<br/></span></td> </tr> <tr style="height: 32px;"> <td style="width: 120.078px; height: 32px;" align="RIGHT" valign="TOP"><span style="font-family: verdana, geneva, sans-serif; font-size: 10pt;"> </span></td> </tr> </tbody>
输出:
<table> <tbody> <tr style="height: 17px;"> <td style="width: 120.078px; height: 17px;" align="RIGHT" valign="TOP"><span style="font-size: 10pt; font-family: verdana, geneva, sans-serif;"><strong>CEO </strong></span></td> <td style="width: 438.922px; height: 49px;" rowspan="2" align="LEFT" valign="TOP"><span style="font-size: 10pt; font-family: verdana, geneva, sans-serif;"><strong> Name<br/></strong> E-Mail<br/></span></td> </tr> <tr style="height: 32px;"> </tr> </tbody>
内容的提问来源于stack exchange,提问作者Viktor Carlson
相关产品推荐
相关产品推荐

