Awk 建立IP和x27的分布;他在数
在DDoS之后对大型日志文件执行AWK时,我试图获得更具dtrace风格的分发输出,以便更容易读取输出:Awk 建立IP和x27的分布;他在数,awk,Awk,在DDoS之后对大型日志文件执行AWK时,我试图获得更具dtrace风格的分发输出,以便更容易读取输出: # tail -1000 access_log | awk '{ print $1 }' | sort | uniq -c | sort -nr | awk '{printf("\n%s ",$0) ; for (i = 0; i<$1 ; i++) {printf("*")};}' 43 192.168.0.1 *********************************
# tail -1000 access_log | awk '{ print $1 }' | sort | uniq -c | sort -nr | awk '{printf("\n%s ",$0) ; for (i = 0; i<$1 ; i++) {printf("*")};}'
43 192.168.0.1 *******************************************
38 192.168.0.2 **************************************
其中@是数字的计数与执行*的较小汇总。让它在每次运行时自动缩放将是一个额外的好处,而我必须做数学来计算如何对每个计数进行排序。您的管道实际上相当不错。你真的需要它来扩展大量的数据。我将您的
tail-1000访问日志| awk'{print$1}|
替换为来自我的一个web服务器的未排序的ip号文件。添加了head-20
,只打印20个最活跃的ip地址
$ sort ip.txt | uniq -c | sort -nr | \
> awk 'NR==1{scale=$1/50} \
> {printf("\n%-23s ",$0) ; \
> for (i = 0; i<($1/scale) ; i++) {
> printf("*")}; \
> }' | head -20
824 xx.xxx.xx.39 **************************************************
149 xx.xxx.xxx.176 **********
138 xx.xxx.xxx.191 *********
137 xx.xxx.xxx.41 *********
105 xx.xxx.xxx.8 *******
97 xx.xxx.xxx.21 ******
96 xx.xxx.xx.220 ******
91 xx.xx.xxx.198 ******
87 xx.xxx.xxx.195 ******
85 xx.xxx.xx.221 ******
79 xxx.xxx.xxx.86 *****
69 xx.xx.xx.12 *****
68 xxx.xxx.xxx.159 *****
65 xx.xxx.xxx.66 ****
63 xx.xxx.xx.28 ****
60 xx.xxx.xxx.104 ****
59 xxx.xxx.xxx.242 ****
59 xxx.xx.xxx.66 ****
56 xx.xxx.xxx.202 ****
这种产出存在人为因素问题。人们根据线条的面积(星号)来判断这些图形。由于此显示会随数字的大小而缩放,所以您无法以任何可靠性直观地比较这两个图形
你的眼睛和大脑想让你判断线条的长度。(我不确定我是从哪里学来的。可能是从塔夫特的书中,或者是从研究统计数据中)但这种比例可能意味着一张图上最长的线代表800,而另一张图上相同的线可能只代表100。你的眼睛和大脑想相信这两个数字大致相等,即使一个是另一个的八倍大,即使你能看到原始数字。请从access\u log中添加5-10行样本数据
824 xx.xxx.xx.39 **************************************************
149 xx.xxx.xxx.176 **********
138 xx.xxx.xxx.191 *********
137 xx.xxx.xxx.41 *********
105 xx.xxx.xxx.8 *******
97 xx.xxx.xxx.21 ******
96 xx.xxx.xx.220 ******
91 xx.xx.xxx.198 ******
87 xx.xxx.xxx.195 ******
85 xx.xxx.xx.221 ******
79 xxx.xxx.xxx.86 *****
69 xx.xx.xx.12 *****
68 xxx.xxx.xxx.159 *****
65 xx.xxx.xxx.66 ****
63 xx.xxx.xx.28 ****
60 xx.xxx.xxx.104 ****
59 xxx.xxx.xxx.242 ****
59 xxx.xx.xxx.66 ****
56 xx.xxx.xxx.202 ****