文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>二分查找的awk

二分查找的awk

时间:2010-11-03  来源:expert1

本人的回复:
awk '                      
# author :expert1
# last-update:2010-10-18
#
function ip2n(ip) { split(ip,a,"."); return a[1]*256^3+a[2]*256^2+a[3]*256+a[4] }
NR==FNR{t[$1]=$3;b[$1]=$2;next}   { for (i in t)
     if(ip2n($0)>=i &&ip2n($0) <= t[i])
    
      {print $0 "  in\t" b[i];break}
     
   }' f2 f1
  原文http://bbs.chinaunix.net/viewthread.php?tid=1800516&rpid=12998908&ordertype=0&page=1#pid12998908   顺便贴上本人写的二分查找,这2个是同类问题 http://bbs.chinaunix.net/viewthread.php?tid=1800295   1。首先sort -t\. -k1,1n -k2,2n -k3,3n -k4,4n ip段 >ip_range

2。
  1. awk ' 
  2. #作者:expert1                      
  3. function ip2n(ip) { split(ip,a,"."); return a[1]*256^3+a[2]*256^2+a[3]*256+a[4] }

  4. BEGIN {FS="[-: ]+"}      

  5. NR==FNR {

  6.        fuck[k++] = $0;next }

  7.      {               

  8.         start = 0

  9.         end = k - 1        

  10.         while(start <= end) {

  11.               mid =int(start+ ((end - start)/2))
  12.                 split(fuck[mid], kao)

  13.                 if(ip2n($1) < ip2n(kao[1]))

  14.                         end = mid-1

  15.                 else if(ip2n($1) > ip2n(kao[2]))

  16.                         start = mid+1

  17.                 else {
  18.                        print $0 " in \t\t"fuck[mid]

  19.                         break

  20.                 }

  21.         }
  22. }'  ip_range ip
 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载