sed, awk 여러 줄 로그 파일, 숫자 {0-999]는 관계를 식별합니다.

sed, awk 여러 줄 로그 파일, 숫자 {0-999]는 관계를 식별합니다.

문제의 간략한 버전:
로그에서 추출해야 합니다.{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는 인터리브될 수 있지만 동일한 번호는 사용할 수 없습니다.
  • 플레이어 이름을 포함하도록 코드를 변경할 수 있습니다.

하지만

  • 세션 번호와 동일한 플레이어 이름을 혼합할 수 없습니다.

관련 정보