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