Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Vladimir Y. Serov                    2:5020/400     30 Apr 2003  17:46:31
 To : Igor S.Kozhukhov
 Subject : Re: awk
 -------------------------------------------------------------------------------- 
 
 Igor S.Kozhukhov пишет:
 
 > можно ли на awk рабоать с бинарными операциями - сдвиг влево побитовый или
 > вправо?
  > что-то в мануле не нашел ?
 
 Hет.
 
 > мне нужно на ip наложить маску подсети и сравнить с исходным значением
 > или посоветйте как можно решить енту проблему ...
 
 Примерно так:
 
 awk '
 function binary (dec, top) {
   top=int(top/2)
   if (top==0) return ""
   b="" int(dec/top)
   new=dec%top
   return b binary(new,top)
 }
 
 function bin2ip(bin,     i, k, ip, sep) {
          if(length(bin)!=32 || bin!~/^[01]+$/) exit(1)
          ip=""
          for (k=0; k<4; k++) {
    num=0;
    for (i=0; i<8; i++) {
       num*=2
       num+=substr(bin,k*8+i+1,1)
    }
    ip=ip (k?".":"") num
          }
          return ip
 }
 
 function ip2bin(ip, mask,      quad, i, bin) {
          if(split(ip,quad,/\./)!=4) exit(1)
          bin=""
          for(i=1;i<=4;i++) {
    quad[i]=int(quad[i])
    if(quad[i]>255 || quad[i]<0) exit(1)
    bin=bin binary(quad[i],256)
          }
          return bin
 }
 
 function netbin(bin, mask) {
   bin=sprintf("%-32.32s",substr(bin,1,mask))
   gsub(/ /,"0",bin)
   return bin
 }
 
 function netaddr(ip, mask) {
   mask=int(mask)
          if(mask>32 || mask<0) exit(1)
   return bin2ip(netbin(ip2bin(ip),mask))
 }
 
 BEGIN {
   for (i=0;i<33;i++) print netaddr("192.168.111.255",i) "/" i
 }
 '
 
 А при чем тут линукс, кстати?
 
 -- 
 Владимир Серов
 
 --- ifmail v.2.15dev5
  * Origin: Novacor (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 awk   Igor S.Kozhukhov   30 Apr 2003 20:38:19 
 Re: awk   Vladimir Y. Serov   30 Apr 2003 17:46:31 
 Re: awk   Andy Shevchenko   30 Apr 2003 20:49:18 
 Re: awk   Igor S.Kozhukhov   01 May 2003 14:44:06 
 Re: awk   Aleksey Cheusov   07 May 2003 20:58:46 
Архивное /ru.linux/13431603da18e.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional