sed - 从字符串中提取特定字符

时间:2015-04-02 08:17:37

标签: linux command-line awk sed tr

所以我有一些不洁的HTML:

"<table class="content divbackground"><tr><td class='title'>&nbsp;</td><td class='title'>From</td><td class='title'>To</td></tr><tr><td class='entry'>Monday</td><td class='entry'>09:00</td><td class='entry'>18:00</td></tr><tr><td class='entry'>Tuesday</td><td class='entry'>09:00</td><td class='entry'>18:00</td></tr><tr><td class='entry'>Wednesday</td><td class='entry'>09:00</td><td class='entry'>18:00</td></tr><tr><td class='entry'>Thursday</td><td class='entry'>09:00</td><td class='entry'>20:00</td></tr><tr><td class='entry'>Friday</td><td class='entry'>09:00</td><td class='entry'>20:00</td></tr><tr><td class='entry'>Saturday</td><td class='entry'>09:00</td><td class='entry'>18:00</td></tr><tr><td class='entry'>Sunday</td><td class='entry'>11:00</td><td class='entry'>18:00</td></tr></table></td></td>"

它是药房的开放时间(信息发布在公共注册簿上)。

现在我可以使用解析器解析HTML,但我发现这对错误不稳健,我仍然需要在<table></table>之间提取代码。

是否有一些很好的unix命令(sed?)可以搜索所有出现的内容:

XX:XX

<td></td>标记内

其中X必须是数字?

1 个答案:

答案 0 :(得分:2)

用正则表达式处理html并不是一个好习惯。但是如果您的输入格式是固定的,您可以尝试这个grep行:

 grep -oP '<td[^>]*>\K\d\d:\d\d' input

使用您的示例输入,它输出:

09:00
18:00
09:00
18:00
09:00
18:00
09:00
20:00
09:00
20:00
09:00
18:00
11:00
18:00