前言全局说明
一、说明
1.1 环境:
Windows 11 家庭版 23H2 22631.3737
Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32
Windows 7 旗舰版
Visual Studio 2013
Ubuntu 18.04.6 LTS (Linux qt-vm 5.4.0-150-generic #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux)
python Python 2.7.17 (default, Mar 8 2023, 18:40:28) [GCC 7.5.0] on linux2
python3 Python 3.6.9 (default, Mar 10 2023, 16:46:00) [GCC 8.4.0] on linux
二、方式1
2.1 内容
文件名:example.html
<table border=1>
<tr>
<td><b>Component</b></td>
<td><b>Status</b></td>
<td><b>Time / Error</b></td>
</tr>
<tr><td>SAVE_DOCUMENT</td><td>OK</td><td>0.406 s</td></tr>
<tr><td>GET_DOCUMENT</td><td>OK</td><td>0.332 s</td></tr>
<tr><td>DVK_SEND</td><td>OK</td><td>0.001 s</td></tr>
<tr><td>DVK_RECEIVE</td><td>OK</td><td>0.001 s</td></tr>
<tr><td>GET_USER_INFO</td><td>OK</td><td>0.143 s</td></tr>
<tr><td>NOTIFICATIONS</td><td>OK</td><td>0.001 s</td></tr>
<tr><td>ERROR_LOG</td><td>OK</td><td>0.001 s</td></tr>
<tr><td>SUMMARY_STATUS</td><td>OK</td><td>0.888 s</td></tr>
</table>
注意:tr 和 td 标签要在一行
2.2 命令
awk -F "</*td>|</*tr>" '/<\/*t[rd]>.*[A-Z][A-Z]/ {print $3, $5, $7 }' example.htmls
2.3 效果
SAVE_DOCUMENT OK 0.406 s
GET_DOCUMENT OK 0.332 s
DVK_SEND OK 0.001 s
DVK_RECEIVE OK 0.001 s
GET_USER_INFO OK 0.143 s
NOTIFICATIONS OK 0.001 s
ERROR_LOG OK 0.001 s
SUMMARY_STATUS OK 0.888 s
2.4 说明
- $3, $5, $7 的,(逗号)并不是必须,只是为了值之间用空格分割。
- 把 ,(逗号)替换成 "---" (分隔符要有双引号),那么空格将被改成 --- (如:4.3所示)
- -F 将输入字段分隔符设置为正则表达式(任何 tr 的或 td 的开始或结束标记
- 然后只适用于匹配这些标签和至少两个大写字段的行
- 然后打印所需的字段。
三、方式2
3.1 内容
文件名:example.html
<table border=1>
<tr>
<td><b>Component</b></td>
<td><b>Status</b></td>
<td><b>Time / Error</b></td>
</tr>
<tr>
<td>SAVE_DOCUMENT</td><td>OK</td><td>0.406 s</td>
</tr>
<tr>
<td>GET_DOCUMENT</td><td>OK</td><td>0.332 s</td>
</tr>
<tr>
<td>DVK_SEND</td><td>OK</td><td>0.001 s</td>
</tr>
<tr>
<td>DVK_RECEIVE</td><td>OK</td><td>0.001 s</td>
</tr>
<tr>
<td>GET_USER_INFO</td><td>OK</td><td>0.143 s</td>
</tr>
<tr>
<td>NOTIFICATIONS</td><td>OK</td><td>0.001 s</td>
</tr>
<tr>
<td>ERROR_LOG</td><td>OK</td><td>0.001 s</td>
</tr>
<tr>
<td>SUMMARY_STATUS</td><td>OK</td><td>0.888 s</td>
</tr>
</table>
3.2 命令
awk -F "</*td>|</*tr>" '/<\/*t[rd]>.*[A-Z][A-Z]/ {print $2, $4, $6 }' example.html
3.3 效果
同 2.3 效果
四、方式3
4.1 内容
文件名:example.html
<table border="0">
<tbody>
<tr style="background-color: #f2f2f2;">
<td>排序</td><td>变量</td><td>英文说明</td><td>中文说明</td><td>备注、示例</td>
</tr>
<tr>
<td bgcolor="#f2f2f2"> </td><td>BUILD_HOST_JAVA_LIBRARY</td><td> </td><td>主机上的JAVA库</td><td> </td>
</tr>
<tr>
<td bgcolor="#f2f2f2"> </td><td>BUILD_HOST_STATIC_LIBRARY</td><td> </td><td>主机上的静态库</td><td> </td>
</tr>
<tr>
<td bgcolor="#f2f2f2"> </td><td>BUILD_SYSTEM</td><td> </td><td>代表:build/core/</td><td>build/core/main.mk</td>
</tr>
<tbody>
</table>
4.2 命令
awk -F "<td *>|</*td>|</*tr>" '/<\/*t[rd]>.*[A-Z][A-Z]/ {print $3"----"$5"----"$7"----"$9 }' example.html
4.3 效果
BUILD_HOST_JAVA_LIBRARY---- ----主机上的JAVA库----
BUILD_HOST_STATIC_LIBRARY---- ----主机上的静态库----
BUILD_SYSTEM---- ----代表:build/core/----build/core/main.mk
五、方式4
5.1 内容
文件名:example.html
<tr><td>D</td><td> </td><td> </td><td> </td><td> </td></tr>
<tr><td> 1</td><td>BUILD_EXECUTABLE</td><td> 2</td><td>目标设备上的可执行文件</td><td> 3</td></tr>
<tr><td> </td><td>BUILD_ENV_SEQUENCE_NUMBER</td><td> </td><td> </td><td> </td></tr>
<tr><td>B</td><td>B</td><td> </td><td> </td><td> </td></tr>
5.2 命令
awk -F "</*td>|</*tr>" ' {print $3"----"$5"----"$7"----"$9"----"$11 }' example.html
5.3 效果
D---- ---- ---- ----
1----BUILD_EXECUTABLE---- 2----目标设备上的可执行文件---- 3
----BUILD_ENV_SEQUENCE_NUMBER---- ---- ----
B----B---- ---- ----
免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。
参考、来源:
https://segmentfault.com/q/1010000043110063/a-1020000043110067