修剪文本并添加时间戳?

3
基本上,我将输出结果如下所示:
<span id="PlayerCount">134,015 people currently online</span>

我希望的是一种方法来裁剪它并显示为:
134,015 - 3:24:20AM - Oct 24

有人能帮忙吗?请注意,数字可能会更改,因此是否可以输出“>”和当前“c”之间的所有内容?并且想办法添加时间戳吗?

在Linux终端中使用命令,那就是叫做bash对吧?


我们在谈论一个Bash脚本吗? - orlp
Bash脚本:是的,我提取了那部分HTML数据并想要对其进行修剪。 - Aaron
什么语言?您需要提供更多的信息。 - user47589
@Inuyasha:语言是__bash__,所以我才问。 - orlp
3个回答

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的相关参数如下:
%r     区域设置的12小时制时间(例如,晚上11:11:04)
%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 命令将尾部文本更改为当前日期和时间。

是的!我可以像我想要的那样更改时间戳吗? - Aaron
@Aaron,我已经更改了格式字符串以近似你想要的内容。正如bos所指出的那样,在“date”手册页面中列举了所有可能性。 - paxdiablo
@paxdiablo,你觉得你能帮我处理wget部分吗?我只想显示你帮助我的内容,但我感觉它可以更容易地完成... http://runescape.com/title.ws 是网站,在下面,你会看到它显示在线玩家数量。我只想获得那个数字和时间戳 :3 - Aaron
@Aaron,这可能应该是一个单独的问题,但我在我的答案末尾添加了一个小脚本,可以实现你想要的功能。 - paxdiablo
哇,太完美了:3 谢谢。好的,最后一个问题!我应该在结尾添加什么来使它每隔...10分钟自动重新运行? - Aaron
显示剩余5条评论

1

快速黑客(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

谢谢!:O 我也喜欢那个。 - 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接