LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 670|回复: 5

求助谁能写这样的shell

[复制链接]
发表于 2005-4-8 17:56:17 | 显示全部楼层 |阅读模式
对下面的文件中的ip进行统计
文件内容如下:
61.235.46.1:57228  
61.235.43.128:44535
71.48.41.14:1115  
71.48.41.14:2392  
71.48.41.14:1113  
71.48.87.22:54049


统计结果能统计出ip个数

61.235.46.1=1
61.235.43.128=1
71.48.41.14 =3
71.48.87.22 =1
发表于 2005-4-9 12:45:57 | 显示全部楼层

  1. #!/bin/sh
  2. awk -F':' '
  3. FNR==1 {
  4.     i=0; t=1; ip[0]=$1; sum[0]=1
  5. }
  6. FNR > 1 {
  7. for (i=0; i < t; i++) {
  8.     if ( $1 == ip[i] ) {
  9.         sum[i] ++;
  10.         break;
  11.     }
  12. }
  13. if ( i == t ) {
  14.     ip[i]=$1;
  15.     sum[i]=1;
  16.     t++;
  17. }
  18. }
  19. END {
  20. for ( i=0; i<t; i++){
  21.     print ip[i]"="sum[i]
  22. }
  23. }
  24. ' "$1"
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-4-9 17:32:12 | 显示全部楼层
cat yourfile |awk -F: '{print $1}' |sort |uniq -c |awk '{print $2"="$1}'
回复 支持 反对

使用道具 举报

发表于 2005-4-10 19:08:54 | 显示全部楼层
awk -F: '{arr[$1]++}END{for (i in arr)print i" = "arr}' file
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 11:41:10 | 显示全部楼层
谢谢大家
这么多强人啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-12 12:36:41 | 显示全部楼层
netstat  -an|grep :80 |cut -f25 -d' '|awk -F: '{arr[$1]++}END{for (i in arr)print i" = "arr}'|sort
那这样就可以统计连接80端口的ip和每个ip的连接数了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表