問題の簡単なバージョン:
ログから抽出する必要があります。{Linux で sed と awk を使用}
最後のログ例では、時間、プレーヤー名(特殊文字を多く含むことができます)、GUID、IPを使用します。
より長いバージョン:
「近い」時点のプレーヤー番号が次の行と一致する場合は、2つのログファイル行をマージする方法です。
この番号は、プレーヤーの接続が切断されるまでのみ有効です。
この番号は新しいプレーヤーが使用します。
これは以下のような特別な問題を引き起こします。 Player#106は4行ですが、2人の異なるプレーヤーを表します。
これまでの進捗状況。
マニュアルとフォーラムを読んでください。個々のデータフィールドが抽出され、mysqlに書き込まれました。
ただし、関連データを一緒に記録する必要があります
。プレイヤー何知的財産権そして何GUID何につなげるか時間。
私のビューでは、このデータは、その時点に近い時点でプレイヤーの数が一致する場合にのみ、2つの線を組み合わせてのみ取得できます。
ログの例:
23:57:20 : Player #29 Simplename (10.21.23.32:2304) connected
23:57:22 : Player #29 Simplename - GUID: 1234567890abcdef123456789aaaaa00 (unverified)
23:56:13 : Player #106 [Som(e) name] Gabriel (10.21.23.33:2304) connected
23:56:15 : Player #106 [Som(e) name] Gabriel - GUID: 1234567890abcdef123456789bbbbb00 (unverified)
23:56:51 : Player #106 [gp0] SomeN@me 123 (10.21.23.34:2304) connected
23:56:52 : Player #106 [gp0] SomeN@me 123 - GUID: 1234567890abcdef123456789aaaaa02 (unverified)
23:57:18 : Player #20 [gp0] SomeN@me 123 (10.21.23.44:2304) connected
23:57:19 : Player #20 [gp0] SomeN@me 123 - GUID: 1234567890abcdef123456789aaaaa03 (unverified)
23:57:51 : Player #6 <<t>> 'N@me5_Can=Be..Hard (10.21.23.32:2304) connected
23:57:53 : Player #6 <<t>> 'N@me5_Can=Be..Hard - GUID: 1234567890abcdef123456789aaaaa04 (unverified)
答え1
IPとGUIDの位置が固定されていると仮定
/connected/ {
name = substr($0,index($0,$4)+length($4)+1) ;
nip=NF-1 ;
name = substr(name,1,index(name,$nip)-2) ;
session[$4]=name ;
connected[name]=$0 ;
ip[name]=$nip ;
}
/GUID/ {
if ( $4 in session ) {
ngu = NF-1 ;
guid=$ngu ;
printf "%s - %s - %s -%s\n",$1,session[$4],guid,ip[session[$4]] ;
delete session[$4] ;
}
}
- IP、GUIDに白がありません...
- 接続時の名前キャプチャ
- GUIDラインから時間を取得すると、登録された接続時間をIPのように保存できます。
( :2304)
IPから削除する練習として残しました。
だから
23:57:22 - Simplename - 1234567890abcdef123456789aaaaa00 -(10.21.23.32:2304)
23:56:15 - [Som(e) name] Gabriel - 1234567890abcdef123456789bbbbb00 -(10.21.23.33:2304)
23:56:52 - [gp0] SomeN@me 123 - 1234567890abcdef123456789aaaaa02 -(10.21.23.34:2304)
23:57:19 - [gp0] SomeN@me 123 - 1234567890abcdef123456789aaaaa03 -(10.21.23.44:2304)
23:57:53 - <<t>> 'N@me5_Can=Be..Hard - 1234567890abcdef123456789aaaaa04 -(10.21.23.32:2304)
メモ:
- セクション99はインターリーブできますが、同じ番号は使用できません。
- プレーヤー名を含めるようにコードを変更できます。
しかし、
- セッション番号と同じプレイヤー名を混在させることはできません。