grep+awk实现
#!/bin/bash grep "3306" | awk 'BEGIN{ # 记录所有状态数 count = 0; # 记录不同IP数 count_ip = 0; }{ count++; # 记录状态 res1[$6]++; if(match($5,/^(.*?):/)){ # RSTART与RLENGTH是match执行成功后自动赋值的变量 # 分别为匹配成功的起始索引和长度 match_str = substr($5,RSTART,RLENGTH-1); if(res2[match_str]==0){ # 说明当前IP已经出现过 res2[match_str]=1; count_ip++; } } }END{ print "TOTAL_IP" " " count_ip; for(k in res1){ print k " " res1[k]; } print "TOTAL_LINK" " " count; }'