문제의 간략한 버전:
로그에서 추출해야 합니다.{Linux에서 sed 및 awk 사용}
최종 로그 예에서는 시간, 플레이어 이름(특수 문자를 많이 포함할 수 있음), GUID, IP를 사용합니다.
더 긴 버전:
"가까운" 시점의 플레이어 번호가 다음 줄과 일치하는 경우 2개의 로그 파일 줄을 병합하는 방법입니다.
이 번호는 플레이어의 연결이 끊어질 때까지만 유효합니다.
이 번호는 새로운 플레이어가 사용하게 됩니다.
이는 아래와 같이 특별한 문제를 야기합니다. Player #106은 4개의 라인이지만 두 명의 다른 플레이어를 나타냅니다.
지금까지의 진행 상황.
매뉴얼과 포럼을 읽어보세요. 개별 데이터 필드가 추출되어 mysql에 기록되었습니다.
하지만 관련 데이터를 함께 기록해야 합니다
.플레이어무엇지적 재산권그리고 뭐GUID무엇에 연결할까시간.
제가 보기에는 이 데이터는 해당 시점에 가까운 시점에 플레이어 수가 일치하는 경우에만 두 선을 결합해야만 얻을 수 있습니다.
로그 예:
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는 인터리브될 수 있지만 동일한 번호는 사용할 수 없습니다.
- 플레이어 이름을 포함하도록 코드를 변경할 수 있습니다.
하지만
- 세션 번호와 동일한 플레이어 이름을 혼합할 수 없습니다.