2011-10-24 50 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