2015-04-02 127 views
0

角色讓我有些不乾淨的HTML:sed的 - 提取特定字符串中

"<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必須是一個數字?

+0

你是什麼意思與*不潔* HTML? (請檢查你的問題,清楚地說明你在嘗試什麼,你嘗試過什麼問題發生了什麼) – hek2mgl 2015-04-02 08:31:17

回答

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 
+0

針對REGEX的DOM,Good agains Ev(i | a)l! :) hihi!讓我們等待,直到OP更清楚地描述他的問題... – hek2mgl 2015-04-02 08:39:11

+0

哇。我喜歡這個東西。正則表達式如此強大。完美地工作! – Eamorr 2015-04-02 08:40:03

+0

我無法對此表示感謝。你爲我節省了很多時間。我不完全理解你的正則表達式(尤其是td和\ K之後的那個),但它非常輕量且看起來很健壯。 – Eamorr 2015-04-02 08:42:04