시간 범위별로 로그 파일 분할

시간 범위별로 로그 파일 분할

로그 파일이 있는데 이를 15분 분량의 복사본으로 자르고 싶습니다. 로그 파일에서 줄은 다음으로 시작됩니다.

dd mmm yyyy hh:mm:ss,xxx 

예를 들어

12 Feb 2013 16:05:02,xxx log text...

파일은 1시간마다 순환되므로 로그 파일의 복사본을 가져와서 15분 분량의 로깅으로 분할하여 4개의 로그 파일을 갖고 싶습니다.

답변1

모든 행의 형식이 올바른 경우

awk -F: '{print >int($2/15)*15 ".log"}' inputfile

0.log, 15.log, 30.log 및 45.log 파일이 생성됩니다.

콜론을 구분 기호로 사용하여 분할하는 방식으로 작동하므로 두 번째 필드 dd mm yyyy hh:mm:ss,xxx는 입니다 mm. 이를 15로 나누고 정수 부분을 취하고 15를 곱하여 mm매 15시간이 시작되는 값을 얻습니다. 그런 다음 문자열을 추가합니다 ".log". 그런 다음 awk에게 현재 줄을 파일에 인쇄하도록 지시합니다.

답변2

AWK:

cat input |
    awk -F ':' '{if ($2 < 15) {print $0 > "15.log"} else print}' |
    awk -F ':' '{if ($2 < 30) {print $0 > "30.log"} else print}' |
    awk -F ':' '{if ($2 < 45) {print $0 > "45.log"} else print}' |
    cat > 60.log

관련 정보