2011-11-27 23 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