Awk 建立IP和x27的分布;他在数

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 *********************************

在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 *******************************************
  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  ****