두 타임스탬프 사이의 로그 파일에서 로그 잘라내기(복사하는 대신)

두 타임스탬프 사이의 로그 파일에서 로그 잘라내기(복사하는 대신)

Apache 액세스 로그가 포함된 매우 큰 2GB access.log 파일이 있습니다. 날짜 및 시간 형식은 다음과 같습니다.

2015년 5월 4일:02:15:25

이 대용량 파일의 로그를 두 타임스탬프 사이의 다른 파일로 잘라내고 싶습니다(단순히 복사하는 것이 아님). "cat"과 "sed"의 조합을 사용하려고 하는데 잘라내는 대신 복사하게 됩니다. 조언해주세요. HP-UX 서버가 있고 access.log 파일은 동적 파일입니다. 즉, 액세스 로그가 파일 끝에 지속적으로 추가됩니다(사용자가 Apache URL을 계속 클릭하기 때문입니다).

미리 감사드립니다

답변1

dates.txt나는 모든 날짜를 읽고 이를 변환하고 인쇄하는 다음 스크립트를 작성했습니다 EPOC(timstamp). 물론 에 작성했습니다 bash. 파일 이름을 변경하고 출력을 새 로그 파일로 파이프해야 합니다.

#!/bin/bash
declare month=(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
while IFS= read -r line <&3; do

    sec1=`echo $line |awk -F/ '{print $1}'`
    sec2tmp=`echo $line |awk -F/ '{print $2}'`
    sec3=`echo $line |awk -F/ '{print $3}' | awk -F: '{print $1}'`
    timesec=`echo $line |awk -F/ '{print $3}' |awk -F: 'BEGIN{ OFS=":";}{print $2,$3,$4}'`
    for i in `seq 0 11`
    do 
        tmp=${month[$i]}
        real_month=`echo $i+1 |bc`
        if [[ "$tmp" =  "$sec2tmp" ]]
        then 

            sec2=$real_month
        fi;

        generated_time="$sec1/$sec2/$sec3 $timesec"
        echo `date --date="$generated_time"  +"%s"`
    done
done 3< dates.txt

관련 정보