概要

引数で引き渡されたログファイルより、10分単位でログ出力されている行数をカウントアップしてファイルに出力する。

  • ログの書式は以下であることが前提
    日付 HH:MM:SS ログ内容
  • 出力は以下となる
    日付 HH:MM,件数 


出力先は、引数に渡されたファイル名に「.out.txt」を付与した名称となる。
同名のファイルがある場合は破棄し、新規に作成して出力するので注意すること。

コード

#!/bin/sh
# ------------------------
#  Log Count Script
# ------------------------
# Version : 1.0
# date    : 2009/09/30

export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH

## Set
LIST=$1
OUTPUT=$1".out.txt"
DATE=`date +%Y/%m/%d\ %H:%M:%S`

## Check 
test -r $OUTPUT && rm $OUTPUT

## Exec

# Day
WC=`cat $LIST | awk '{print $1}' | sort | uniq | sed -e '/^$/d' | wc -l | awk '{print $1}'`
i=1
while [ $i -le $WC ];
do
DAY=`cat $LIST | awk '{print $1}' | sort | uniq | sed -e '/^$/d' | sed -n -e ${i}"p"`

# Hour
HORWC=`cat $LIST | grep $DAY | awk '{print $2}' | awk 'BEGIN{FS=":"}{print $1}' | sort | uniq | wc -l | awk '{print $1}'`
j=1
while [ $j -le $HORWC ];
do
HOUR=`cat $LIST | grep $DAY | awk '{print $2}' | awk 'BEGIN{FS=":"}{print $1}' | sort | uniq | sed -e '/^$/d' | sed -n -e ${j}"p"`

#Minit
k=0
while [ $k -le 6 ];
do
COUNT=`cat $LIST | grep $DAY" "$HOUR":"$k | wc -l | awk '{print $1}'`
echo $DAY" "$HOUR":"$k"0,"$COUNT >> $OUTPUT
k=$(($k+1))
done

j=$(($j+1))
done

i=$(($i+1))
done

# EOF

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-09-30 (水) 17:31:30 (5321d)