1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| if [[ "$1" == "" ]]; then echo "usage: greplog.sh <options> <keyword>" echo "<options>" echo "-t 默认当前年月日时" echo "-t [前x小时]" echo "-t [指定日小时 例如 0114]" echo "-t [指定月日小时 例如 120114]" exit 1 fi
D= # 传入的参数 args=("$@") # grep 过滤的条件 args_filter=() LOG= LOGDIR=/tmp/lb/log/
# 遍历传入的参数 进行拼接 for ((i = 0; i < ${#args[@]}; i++)); do if [[ "${args[$i]}" == "-t" ]]; then n=$(($i + 1)) D="${args[$n]}" i=$(($i + 1)) else args_filter[${#args_filter[@]}]="${args[$i]}" fi done
# 初始默认的日志文件筛选参数 if [[ "$D" == "" ]]; then D="0" fi
# 开始拼接筛选日志文件的条件 if [ $D -eq "0" ]; then LOG=$(date "+%Y%m%d%H")".log" elif [ ${#D} -eq 1 ]; then LOG=$(date -d "-${D} hour" +%Y%m%d%H)".log" elif [ ${#D} -eq 2 ]; then LOG=$(date -d "-${D} hour" +%Y%m%d%H)".log" elif [ ${#D} -eq 3 ]; then D=0$D LOG=$(date "+%Y%m")$D".log" elif [ ${#D} -eq 4 ]; then LOG=$(date "+%Y%m")$D".log" elif [ ${#D} -eq 5 ]; then D=0$D LOG=$(date "+%Y")$D".log" elif [ ${#D} -eq 6 ]; then LOG=$(date "+%Y")$D".log" fi
# 拼装日志文件目录 LOG=$LOGDIR"*"$LOG LOG=${LOG//\\/\/}
# 查看目录是否有日志文件 NLOG=$(ls $LOG | wc -l) if [ $NLOG -eq 0 ]; then echo echo "file $LOG not existed, stop" echo exit 1 fi
#echo #echo "exec \"cat $LOG | grep -a ${args_filter[*]}\"" #echo
# 开始查日志 cat $LOG | grep -a "${args_filter[@]}" | sort -k4
|