Art*_*hur 37 apache sorting bash logging
我正在尝试从我的apache日志中提取IP地址,计算它们并对它们进行排序.
无论出于何种原因,分拣部分都很糟糕.
这是命令:
cat access.* | awk '{ print $1 }' | sort | uniq -c | sort -n
Run Code Online (Sandbox Code Playgroud)
输出示例:
16789 65.X.X.X
19448 65.X.X.X
1995 138.X.X.X
2407 213.X.X.X
2728 213.X.X.X
5478 188.X.X.X
6496 176.X.X.X
11332 130.X.X.X
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这些值没有真正排序.我还试图在行(sed 's/^[\t ]*//g'
)的开头删除空白并使用sort -n -t" " -k1
,这不会改变任何东西.
任何提示?
小智 98
这可能会迟到,但使用第一种排序中的数字将为您提供所需的结果,
cat access.log | awk '{print $1}' | sort -n | uniq -c | sort -nr | head -20
Run Code Online (Sandbox Code Playgroud)
输出:
29877 93.xxx.xxx.xxx
17538 80.xxx.xxx.xxx
5895 198.xxx.xxx.xxx
3042 37.xxx.xxx.xxx
2956 208.xxx.xxx.xxx
2613 94.xxx.xxx.xxx
2572 89.xxx.xxx.xxx
2268 94.xxx.xxx.xxx
1896 89.xxx.xxx.xxx
1584 46.xxx.xxx.xxx
1402 208.xxx.xxx.xxx
1273 93.xxx.xxx.xxx
1054 208.xxx.xxx.xxx
860 162.xxx.xxx.xxx
830 208.xxx.xxx.xxx
606 162.xxx.xxx.xxx
545 94.xxx.xxx.xxx
480 37.xxx.xxx.xxx
446 162.xxx.xxx.xxx
398 162.xxx.xxx.xxx
Run Code Online (Sandbox Code Playgroud)
Ben*_*n D 18
为何使用cat | awk
?你只需要使用awk
:
awk '{ print $1 }' /var/log/*access*log | sort -n | uniq -c | sort -nr | head -20
Run Code Online (Sandbox Code Playgroud)