쿵쿵 유틸리티

쿵쿵 유틸리티

다음 기능을 제공하는 쉘 스크립트를 구현하십시오.

입력으로 로그 파일이 필요합니다. 로그 파일에는 측면에 표시된 메시지 표시가 있는 로그 문이 포함되어 있습니다.

이 유틸리티는 지정된 시간보다 오래 걸리는 모든 작업을 나열합니다. 시간은 명령줄에서 초 단위로 지정됩니다.

입력 로그 파일 예:

#<process id> <date time> <log level> <file name> <line number> <actual message>

1098 2007-02-28 15:23:09 WARN db_util.c 5928 Config file not found, using default values
1098 2007-02-28 15:23:09 INFO db_util.c 5908 Connecting to database
1098 2007-02-28 15:23:17 INFO db_util.c 5908 Connected to database
1098 2007-02-28 15:23:17 ERROR log_test.c 198 Unable to setup our satellite launch system
1098 2007-02-28 15:23:18 INFO log_test.c 198 Reconnecting to launch the satellite
1098 2007-02-28 15:23:21 INFO log_test.c 198 Reconnected. Initialize to launch the satellite.

예: 위 파일을 입력으로 사용하고 성능 임계 시간을 2초로 하여 유틸리티를 실행하면 다음과 같은 출력이 생성됩니다.

예제 출력:

1098 2007-02-28 15:23:09 INFO db_util.c 5908 Connecting to database
1098 2007-02-28 15:23:18 INFO log_test.c 198 Reconnecting to launch the satellite

내가 지금까지 시도한 것 :

awk -F' ' '! /#.*$/ {print $3}' $1 | awk  'BEGIN{FS=OFS=", "}{t=$1" "$2; "date -d \""t"\"  +%s"|getline d; print $1,$2,d}' $1

입력 로그 파일에서 시간 열을 읽고 Unix 타임스탬프로 변환합니다.

답변1

실제로 날짜를 다시 코딩할 필요는 없다고 생각합니다.

awk '{split($3, p, /:/); if (prev && (prev + 2) % 60 <= p[3]) {
      print line}; prev=p[3]; line=$0}' logfile

관련 정보