2つのタイムスタンプ間のログファイルからログを切り取ります(コピーする代わりに)

2つのタイムスタンプ間のログファイルからログを切り取ります(コピーする代わりに)

Apacheアクセスログを含む非常に大きな2GBのaccess.logファイルがあります。日付と時刻の形式は次のとおりです。

2015年5月4日:02:15:25

この大容量ファイルのログを2つのタイムスタンプ間の別のファイルに切り取りたい(単にコピーするのではありません)。 "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

関連情報