标题: [求助]数值转换
[打印本页]
作者: ok1
时间: 2007-7-30 08:51
标题: [求助]数值转换
ip.txt 内容如下
Quote: |
1.1.0.0 1.1.0.255 IANA CZ88.NET
3.0.0.0 3.255.255.255 美国 新泽西通用电气公司
4.0.0.0 4.10.255.255 美国 CZ88.NET
以下三十万行以上面相同数值。。。。。。。。。。。 |
|
Quote: |
1.1.0.0 转换 1*256*256*256+1*256*256+0*256+0 = 16842752
1.1.0.255 转换 1*256*256*256+1*256*256+0*256+255 = 16843007
转换成生成一个ip2.txt
16842752 16843007 IANA CZ88.NET
以下几十万行数值都这样 |
|
作者: ccwan
时间: 2007-7-30 10:44
这一句话就把我吓住了。
作者: ok1
时间: 2007-7-30 11:15
循环搞呀,才三十万行,
作者: lxmxn
时间: 2007-7-31 10:16
用gawk试试。
作者: ok1
时间: 2007-7-31 19:56
能给个源码不 偶是菜鸟
作者: lxmxn
时间: 2007-8-3 17:44
命令行执行:
gawk -f MyPro.awk ip.txt
MyPro.awk的内容如下:
BEGIN{
infomations="如果你没有Gawk,可以从这里下载得到:\nhttp://www.cn-dos.net/forum/viewthread.php?tid=31098&page=1#pid205571\n"
print infomations;
}
{
if(($1~/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/)&&($2~/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/)){
split($1,ip_first,".");
split($2,ip_last,".");
$1=$2=0;
for(i=1;i<=4;i++){
if((ip_first[i]>256||ip_first[i]<0)||(ip_last[i]<0||ip_last[i]>256)){print "ERROR!!!\n\tBad IP-Address format!Exit...";exit;};
$1+=ip_first[i]*255**(4-i);
$2+=ip_last[i]*255**(4-i);
}
#print $0;
#如果(print $0)不能满足要求,可以用下面这个来输出,格式要规矩些.
printf("%11.0f %11.0f",$1,$2);
$1=$2="";
for(_=3;_<=NF;_++){printf " "$_;}
print "";
}
}
作者: ok1
时间: 2007-8-3 22:34
谢谢ing
作者: ccwan
时间: 2007-8-4 14:10
这个gawk资料一直还没有看呢。