로그 파일이 있는데 이를 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