shell中的日志分析脚本

shell中的日志分析脚本,shell,Shell,我是个脚本新手,我需要你的帮助。我有一个日志文件,我被清理干净了。如下所示(时间、持续时间(毫秒)、操作): 我需要制作一个使用持续时间数据并计算操作数的脚本。首先-您需要简化对不同字段的解析。一种简单的方法是使用 tr ";" " " <logfile|awkscript tr”;“?”?问题是什么?看看Awk教程()和这个问题()。谢谢!Awk是我的第一个想法,但现在一切都结束了。我被卡住了。@tomtom请发布您在Awk中尝试的代码以及错误是什么,它可能会帮助您。 tr ";" "

我是个脚本新手,我需要你的帮助。我有一个日志文件,我被清理干净了。如下所示(时间、持续时间(毫秒)、操作):


我需要制作一个使用持续时间数据并计算操作数的脚本。

首先-您需要简化对不同字段的解析。一种简单的方法是使用

tr ";" " " <logfile|awkscript

tr”;“?”?问题是什么?看看Awk教程()和这个问题()。谢谢!Awk是我的第一个想法,但现在一切都结束了。我被卡住了。@tomtom请发布您在Awk中尝试的代码以及错误是什么,它可能会帮助您。
tr ";" " " <logfile|awkscript
#!/usr/bin/awk -f
BEGIN {
    low["<1ms"]=0;high["<1ms"]=1
    low["1-10ms"]=1;high["1-10ms"]=10
    low["10-100ms"]=10;high["10-100ms"]=100
    low["100-500ms"]=100;high["100-500ms"]=500
    low[">500ms"]=500;high[">500ms"]=1000000000
}
{
# Middle section - for each line
duration=$3

for (i in high) {
    if ((duration > low[i]) && (duration <= high[i]) ) {
#       printf("duration: %d, low: %s,high: %s\n", duration, low[i], high[i]);
        total+=duration # total duration
        bin[i]++ # store a count into different bins
        count++ # total number of measurements
    }
}
}
END {
average=total/count
FMT="%-10s %10s %10s %10s %10s %10s\n"
NFMT="%-10.3f %10s %10s %10s %10s %10s\n"
printf(FMT,"AVG", "<1ms", "1-10ms", "10-100ms", "100-500ms", "500+ms")
printf(NFMT,average, bin["<1ms"], bin["1-10ms"], bin["10-100ms"], bin["100-500m\
s"], bin["500+ms"])

}
AVG              <1ms     1-10ms   10-100ms  100-500ms     500+ms

282.916                                              4