awk
ここでは、ほとんどのゆがみを取り除くために、オリジナルを 2 つのインスタンスにリファクタリングする簡単な試みを示します。
#!/bin/sh
#URL1=http://runescape.com/title.ws
#tot=$(wget -qO- "$URL1" | awk 'tolower($0) ~ /playercount/ {
# # Trim anything after this expression
# gsub(/<\/span> Players Online Now<\/span>.*/, "")
# # From the remainder, trim anything up through last tag close
# gsub(/.*>/, "")
# # Should be left with a number. Remove any thousands separator
# gsub(/,/, "")
# # Should have a computer-readable number now. Print it
# print }')
URL0='http://www.runescape.com/c=eWHvvLATbvs/player_count.js?varname=iPlayerCount&callback=jQuery17201610493347980082_1378103074657&_=1378103197632'
tot=$(wget -qO- "$URL0" | awk -F '[()]' '{ print $2 }'
URL2=http://oldschool.runescape.com
wget -qO- "$URL2" | awk -v tot=$tot -v fmt="%'d people " '
/people playing/ { printf(fmt, tot-$4 )}'
date '+%r %b %d %Y'
の処理は、 の後に続く をURL1
検索するため、多少堅牢になるはずです。もちろん、いつでもページの書式設定を変更して、これが再び壊れる可能性があります。したがって、JSON API が提供されている場合は、JSON API を使用する方がよいでしょう。(簡単なグーグル検索では、これが存在することが示唆されていますが、文書化されていません。主な文書はhttp://services.runescape.com/m=rswiki/en/Grand_Exchange_APIsにあるようですが、これにはプレイヤー統計の要約については何もありません。)span
Players Online Now
もちろん、コメントは厳密に必要というわけではありません。これらは、ページのソースが再び変更された場合に何を変更すればよいかを理解するのに役立つはずです。そのため、Awk を十分に習得して必要がない場合を除き、それらを削除することはお勧めできません。
編集:プレーヤーの合計数に JSON API を使用するように更新しました。これは、より堅牢で、よりシンプルになるはずです。念のため、元のコードをコメントアウトしたままにしました。