2013-02-23 2 views
2

Игроки из игры A и B:сценарий оболочки для захвата данных и вычитая

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')/" \ 
    | cut -d">" -f 3,4 \ 
    | sed 's/<\/span>//' 

Выход: 111,048 people 10:43:54 PM Feb 22 2013

Игроки из игры B:

wget --output-document=- http://oldschool.runescape.com/ 2>/dev/null | grep "people playing" 

Выход: There are currently 42823 people playing!

Я хочу понять, сколько играют в игру A, но я не уверен, как взять номера вы получаете от обоих этих выходов, и вычесть их и вывести их в том же формате, как это:

`111,048 people 10:43:54 PM Feb 22 2013` 
+1

Как только вы получите числа в переменные, используйте '(($ a - $ b))', чтобы вычесть их. – Barmar

+0

Спасибо. Просто не знаю подсказки, как обрезать и хранить только цифры, а затем отображать его снова :( – Aaron

+0

Вы сказали, что застряли в математической части. Мне кажется, что у вас есть ручка о том, как использовать sed для разворачивания строк. – Barmar

ответ

1
#!/bin/sh 

URL1=http://runescape.com/title.ws 
tot=`wget -qO- $URL1 | grep -i PlayerCount | cut -d\> -f4 | cut -d\< -f1 | sed -e's/,//'` 
URL2=http://oldschool.runescape.com 
b=`wget -qO- $URL2| grep "people playing" | awk '{print $4}'` 
a=`expr $tot - $b` 
echo "$a people `date '+%r %b %d %Y'`" 

... если вы хотите сделать это запятые добавить эти строки в скрипт ...

export LC_ALL=en_US.UTF-8 
a_with_comma=`echo $a | awk "{printf \"%'d\n\", \\$1}"` 
echo "$a_with_comma people `date '+%r %b %d %Y'`" 
+1

Ничего себе, вы сделали это легко. Есть ли способ добавить запятую в числовой результат? Я OCD :( – Aaron

+1

Я не думаю, что есть простой способ добавить запятые к номерам. напишите цикл, который выделяет число в группах по 3 цифры. – Barmar

+0

Я обновляю свой ответ для запятых –

3
total=$(wget --output-document=- http://runescape.com/title.ws 2>/dev/null | 
     sed -n '/PlayerCount/{s/^[^0-9]*<span>\([0-9,]*\).*/\1/;s/,//g;p;q;}') 
gameb=$(wget --output-document=- http://oldschool.runescape.com/ 2>/dev/null | 
     sed -n '/people playing/{s/There are currently \([0-9]*\) people playing!/\1/;p;q;}') 
gamea=$(($total - $gameb)) 
+0

Эй, спасибо. Как добавить запятую номер – Aaron

Смежные вопросы