ログファイルから10分毎の出力行数をカウントする
http://extstrg.asabiya.net/pukiwiki/index.php?%A5%ED%A5%B0%A5%D5%A5%A1%A5%A4%A5%EB%A4%AB%A4%E910%CA%AC%CB%E8%A4%CE%BD%D0%CE%CF%B9%D4%BF%F4%A4%F2%A5%AB%A5%A6%A5%F3%A5%C8%A4%B9%A4%EB概要 †
引数で引き渡されたログファイルより、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
Last-modified: 2009-09-30 (水) 17:31:30 (5611d)