sed, awk 複数行のログファイル、数値 {0-999] は関係を識別します。

sed, awk 複数行のログファイル、数値 {0-999] は関係を識別します。

問題の簡単なバージョン:
ログから抽出する必要があります。{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はインターリーブできますが、同じ番号は使用できません。
  • プレーヤー名を含めるようにコードを変更できます。

しかし、

  • セッション番号と同じプレイヤー名を混在させることはできません。

おすすめ記事