修剪文本并添加时间戳



所以基本上我的输出如下:

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

我想要的是一种方式来修剪它显示:

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

有人能帮忙吗?还要注意数字可能会改变,所以是否有可能输出当前中">"one_answers"c"之间的所有内容?加上时间戳?

在Linux中使用终端命令,这叫做bash,对吗?

你的意思是:

$ 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的相关参数为:

<>之前%r区域设置的12小时时钟时间(例如,11:11:04 PM)%b地区的缩写月名(例如,Jan)%d一个月中的第几天(例如,01)% Y年之前

格式说明符的完整列表可以从date手册页获得(从shell执行man date)。


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

#!/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
在细节:

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

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
produce_OUTPUT | grep -o '[0-9,]+' | while read count; do 
  printf "%s - %sn" $count "$(date +'%l:%M:%S %p - %b %e')"
done

最新更新