そのため、ユーザーが Teamspeak 3 サーバーでログを介してオンラインになっている時間をカウントしようとしています。ログ形式は次のようなものです
2015-10-14 23:30:29.676932|INFO |VirtualServerBase| 1| client connected 'clientX'(id:XY) from IPx.IPx.IPx.IPx:PortX
2015-10-15 00:12:45.870381|INFO |VirtualServerBase| 1| client disconnected 'clientX'(id:XY) reason 'reasonmsg=leave'
.
もちろんgrep "client connected \|client disconnected"
、他のエントリを除外して、| grep "(id:XY)"
ユーザー XY のみを表示するように追加することもできます。時刻| cut -c 1-16
と日付のみを表示し、不要なものをすべて除外する場合。
結果のコマンドはcat *.log | grep "client connected\|client disconnected" | cut -c 1-16
. その後、出力は次のようになります。
2015-10-02 14:12
2015-10-02 14:17
2015-10-06 14:18
2015-10-06 15:27
問題は、接続と切断の間の時間をカウントし、それらをシェル スクリプト内で合計するにはどうすればよいかということです。