“今日を含まない”指定した日数で取り出すか
“今日を含む”指定した日数で取り出すか指定できるようにした(*´ェ`)
-t オプションを付けると today で“今日を含む”
-y オプションを付けると yesterday で“今日を含まない”
#!/bin/bash
######################
#
# option : -t[--today]|-y[--yesterday]
#
# version : Charlie
# author : foloro
#
######################
#使用方法
function usage() {
echo "使用方法 : $0 -t|-y 日数" 1>&2
}
#引数の数をチェック
if [ $# -ne 2 ]; then
usage
exit 1
fi
#引数のオプションをチェック
if ! [ $1 == "-t" -o $1 == "-y" -o $1 == "--today" -o $1 == "--yesterday" ]; then
usage
exit 1
fi
#引数の日数が数字かチェック
if [ `expr "$2" : '[[:digit:]]*'` -eq 0 ] > /dev/null ; then
usage
exit 1
fi
#引数の過去の日数をチェック
if [ $2 -lt 1 ]; then
echo "日数は1以上の値で指定してください" 1>&2
exit 1
fi
#日付を配列に格納する
DAYNUM=$2
case $1 in
"-t" | "--today" )
for (( i = 0; i < $DAYNUM; i++ ))
do
DAYS[i]=`LANG=C date -d "$i days ago" +"%d/%b/%Y"`
done
;;
"-y" | "--yesterday" )
for (( i = 1; i <= $DAYNUM; i++ ))
do
DAYS[i-1]=`LANG=C date -d "$i days ago" +"%d/%b/%Y"`
done
;;
* )
usage
exit 1
;;
esac
searchQuery=${DAYS[0]}
for (( i = 1; i < $DAYNUM; i++ ))
do
searchQuery="$searchQuery""|""${DAYS[$i]}"
done
grep -E $searchQuery
使い方
シェルスクリプトをcutlogday.shという名前で作成して
Apacheのアクセスログがspecial-forces.jp-access_log-yyyymmddで“今日を含む”過去10日間のログが欲しい場合
cat /var/log/httpd/special-forces.jp-access_log* | ./cutlogday.sh -t 10 > matometa.log
もしこのシェルスクリプトをパイプなしで実行した場合
./cutlogday.sh -t 10
標準入力となる(*´ェ`)
Version Delta へ続く。