banner
NEWS LETTER

一个简单的日志搜索脚本

Scroll down
  • 直接上脚本
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

你那么好看,应该会支持一下我吧~

其他文章
cover
shell脚本参数说明
  • 23/12/02
  • 14:12
  • shell
请输入关键词进行搜索