Как извлечь данные из таблицы HTML в сценарии оболочки?

Я пытаюсь создать сценарий BASH, который будет извлекать данные из таблицы 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>

И я хочу, чтобы сценарий BASH выводил его так:

SAVE_DOCUMENT OK 0.475 s
GET_DOCUMENT OK 0.345 s
DVK_SEND OK 0.002 s
DVK_RECEIVE OK 0.001 s
GET_USER_INFO OK 4.465 s
NOTIFICATIONS OK 0.001 s
ERROR_LOG OK 0.002 s
SUMMARY_STATUS OK 5.294 s

Как это сделать?

До сих пор я пробовал использовать sed, но Я не знаю, как им пользоваться. Заголовок таблицы (компонент, состояние, время / ошибка) я исключил с помощью grep, используя grep " , поэтому только строки, начинающиеся с будет выбран для следующего анализа (sed). Вот что я использовал: sed 's @ <\ ([^ <>] [^ <>] * \)> \ ([^ <>] * \) @ \ 2 @ g ' Но тогда теги все еще остаются, и они не разделяют строки. Другими словами, результат этого сценария:

<tr>SAVE_DOCUMENTOK0.406 s</tr>

Полная команда сценария, над которым я работаю:

cat $FILENAME | grep "<tr><td>" | sed 's@<\([^<>][^<>]*\)>\([^<>]*\)</\1>@\2@g'
11
задан kenorb 10 October 2015 в 18:29
поделиться