2011-10-24 36 views
3

所以基本上我有我的输出如下:修剪文本并添加时间戳?

<span id="PlayerCount">134,015 people currently online</span> 

我要的是一个方法来修剪它显示:

134,015 - 3:24:20AM - Oct 24 

谁能帮助?还要注意数字可能会改变,因此可能会输出当前“>”和“c”之间的所有内容吗?以某种方式添加时间戳?

在Linux中使用来自终端的命令,这就是所谓的bash正确吗?

+0

我们是在谈论这里bash脚本? – orlp

+0

bash脚本是的,我提取了一点html数据,我想修剪它。 – Aaron

+0

什么语言?你需要提供更多信息。 – Amy

回答

2

你也许意思是这样:

$ echo '<span id="PlayerCount">134,015 people currently online</span>' | sed 
    -e 's/^[^>]*>//' 
    -e "s/currently.*$/$(date '+%r %b %d %Y')/" 

产生:

134,015 people 03:36:30 PM Oct 24 2011 

echo只是测试数据。第一个sed命令将会把第一个>字符的内容变成空白(即删除它)。

第二个将从currently到所有格式的当前日期(尽管我已经添加了一年以来,因为我对于细节的一些细节)而改变了一切。

date这里的相关参数为:可以从date手册页(执行从外壳man date)获得

 
%r  locale's 12-hour clock time (e.g., 11:11:04 PM) 
%b  locale's abbreviated month name (e.g., Jan) 
%d  day of month (e.g., 01) 
%Y  year 

格式说明符的完整列表。


一个小脚本,这将给你从你的评论中提到的页面所需的信息是:

#!/usr/bin/bash 
wget --output-document=- http://runescape.com/title.ws 2>/dev/null \ 
    | grep PlayerCount \ 
    | head -1l \ 
    | sed 's/^[^>]*>//' \ 
    | sed "s/currently.*$/$(date '+%r %b %d %Y')/" 

运行这给了我:

pax$ ./online.sh 
132,682 people 04:09:17 PM Oct 24 2011 

详细:

  • The wget位下拉网页并将其写入标准输出。标准错误(进度条)被丢弃。
  • grep只提取其中包含单词PlayerCount的行。
  • head扔掉了所有,但第一个。
  • 第一个sed去掉了第一个>字符。
  • 第二个sed将尾随文本更改为当前日期和时间。
+0

是的!是否有可能像我想要的那样改变时间戳? – Aaron

+0

是的。发出“男人约会”来查看可用字段。 – bos

+0

好的,谢谢。 – Aaron

1

Quickhack(TM):

$ people=$(echo '<span id="PlayerCount">134,015 people currently online</span>' | \ 
      sed -e 's/^.*>\(.*\) people.*$/\1/') 
$ echo $people - $(date) 
134,015 - Mon Oct 24 09:36:23 CEST 2011 
+0

谢谢! :哦,我也喜欢那个。 – Aaron

1
produce_OUTPUT | grep -o '[0-9,]\+' | while read count; do 
    printf "%s - %s\n" $count "$(date +'%l:%M:%S %p - %b %e')" 
done