1

次のデータがあります。列ごとに、、IPおよびPORTですBytesIP類似とに基づいてバイトを合計したいと思いますPort。つまり、PortIP'sは同じ合計バイト数であり、最終的にはに基づいて並べ替えbytesられるため、最終的には、で並べ替えportsられた上位10人の話者を取得できます。portbytes

したがって、以下のデータでは、ポート80のトップトーカーは次のようになります。

174.143.121.217 80 30722
109.108.151.126 80 25083

その場合、ポート5989のトップトーカーは次のようになります。

192.168.23.20 5989 26601

ファイル:

208.76.128.67 443 2975
204.154.110.99 80 1713
130.117.119.220 80 845
192.168.23.20 5989 26601
23.15.8.35 80 33944
64.69.6.116 443 5936
208.76.128.67 443 2309
66.129.120.117 80 1514
208.76.128.67 443 4143
109.108.151.126 80 3589
109.108.151.126 80 21494
174.143.121.217 80 30722
173.45.233.170 80 2218
66.235.155.28 80 4367
64.94.107.50 80 1236
76.13.114.90 80 534
4

1 に答える 1

1

、および素敵なテーブル形式の出力の場合awk:sortcolumn -t

awk '{a[$1" "$2]=a[$1" "$2]+$3}END{for(k in a) print k,a[k]}' file |
> sort -nk2 -rnk3 |
> column -t 
192.168.23.20    5989  26601
208.76.128.67    443   9427
64.69.6.116      443   5936
23.15.8.35       80    33944
174.143.121.217  80    30722
109.108.151.126  80    25083
66.235.155.28    80    4367
173.45.233.170   80    2218
204.154.110.99   80    1713
66.129.120.117   80    1514
64.94.107.50     80    1236
130.117.119.220  80    845
76.13.114.90     80    534

編集

ポートごとに上位 10 件に制限するには、 にパイプできますawk 'c[$2]++<10'。デモ(上位 4 つに制限) :

$ awk '{a[$1" "$2]=a[$1" "$2]+$3}END{for(k in a) print k,a[k]}' file |
> sort -nk2 -rnk3 |
> column -t |
> awk 'c[$2]++<4' 
192.168.23.20    5989  26601
208.76.128.67    443   9427
64.69.6.116      443   5936
23.15.8.35       80    33944
174.143.121.217  80    30722
109.108.151.126  80    25083
66.235.155.28    80    4367
于 2013-03-15T13:37:10.310 に答える