2011-11-27 22 views
1

我不知道如何真正修剪文本。Shell腳本從網頁和修剪中拉文本

我到目前爲止有:

wget --output-document=- http://www.geupdate.com 2>/dev/null \ 
| grep last \ 

輸出:

<li><b><img src='http://www.geupdate.com/img/arrow-tail.png' align='left'>Time since last update</b>: <br />0 day, 19 hours, 23 min, 36 sec</li><li><b><img src='http://www.geupdate.com/img/ledlightblue.png' align='left'>An Update to occur within:</b> (<a href='http://www.geupdate.com/update-prediction/'><font size='-2'>?</font></a>) <br />0 day, 21 hours, 56 min, 30 sec</li>    </ul> 

什麼其實我是想修剪出的是這樣的:

0 day, 19 hours, 23 min, 36 sec 

如果有人能告訴我如何寫一些東西或寫出來,如果它很簡單,那會很好!

當我運行此:

wget --output-document=- http://www.geupdate.com 2>/dev/null \ 
| grep last \ 
| grep -o '[[:digit:]]* day.* sec' 

我得到這個:

0 day, 19 hours, 43 min, 16 sec</li><li><b><img src='http://www.geupdate.com/img/ledlightblue.png' align='left'>An Update to occur within:</b> (<a href='http://www.geupdate.com/update-prediction/'><font size='-2'>?</font></a>) <br />0 day, 21 hours, 36 min, 50 sec 

回答

3
wget --output-document=- http://www.geupdate.com 2>/dev/null \ 
| grep last \ 
| grep -o '[[:digit:]]* days*, [[:digit:]]* hours*, [[:digit:]]* min, [[:digit:]]* sec' \ 
| head -1 
+0

如何將切斷一切 「秒」,那麼後? – Aaron

+1

@Aaron:那*會切斷'sec'後面的所有內容。 '-o'標誌指向'grep'告訴它只產生匹配模式的子字符串,而不是拉動包含它的整行。 (「O」代表「o​​nly」,儘管助記符只解釋了其一半行爲:'echo 1234 | grep -o'[1234]''將會打印每個'1','2','3'和' 4'在單獨的行,恕我直言,是不明顯的名稱「唯一」) – ruakh

+0

好吧,謝謝你讓我嘗試再次運行這個:3 – Aaron