所以基本上我有我的输出如下:修剪文本并添加时间戳?
<span id="PlayerCount">134,015 people currently online</span>
我要的是一个方法来修剪它显示:
134,015 - 3:24:20AM - Oct 24
谁能帮助?还要注意数字可能会改变,因此可能会输出当前“>”和“c”之间的所有内容吗?以某种方式添加时间戳?
在Linux中使用来自终端的命令,这就是所谓的bash正确吗?
所以基本上我有我的输出如下:修剪文本并添加时间戳?
<span id="PlayerCount">134,015 people currently online</span>
我要的是一个方法来修剪它显示:
134,015 - 3:24:20AM - Oct 24
谁能帮助?还要注意数字可能会改变,因此可能会输出当前“>”和“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
这里的相关参数为:可以从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
详细:
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
谢谢! :哦,我也喜欢那个。 – Aaron
produce_OUTPUT | grep -o '[0-9,]\+' | while read count; do
printf "%s - %s\n" $count "$(date +'%l:%M:%S %p - %b %e')"
done
我们是在谈论这里bash脚本? – orlp
bash脚本是的,我提取了一点html数据,我想修剪它。 – Aaron
什么语言?你需要提供更多信息。 – Amy