首页 > 其他 > 详细

awk文本处理案例二十六--IP段生成文本列表

时间:2014-03-01 03:16:10      阅读:537      评论:0      收藏:0      [点我收藏+]

【场景】

1
2
3
4
5
6
7
8
9
10
11
12
有大概这样的IP段列表,
111.0.0.0-111.188.255.0
10.0.0.0-99.0.0.0
88.0.0.0-100.0.0.0
复制代码
如何用脚本 生成一文件内容为
111.0.0.0
111.0.0.1
111.0.0.2
111.0.0.3
...
111.188.255.0

【分析】

    题意是:生成两个IP之前IP列表;若IP的前3个是相同的;这样处理就很好解决。其实大家可以仿照之前的工时脚本那篇博客的思路来解决。不过下面的代码更好一点;好在自定义函数的代码。同理之前的工时脚本也可以按照下面的代码思路来写自定义函数

【代码】

1
2
3
function ip2n(ip, n,c){split(ip,a,".");for(c=1;c<=4;c++)n=n*256+a[c];return n}
function n2ip(n, ip,c){ip=n%256;for(c=3;c>0;c--){n=int(n/256);ip(n%256)"."ip}return ip}
BEGIN{FS="-"}{s=ip2n($1);e=ip2n($2);while(s<=e)print n2ip(s++)}‘

【测试】

1
2
3
4
5
6
7
8
9
10
11
12
13
echo 111.0.255.250-111.1.0.5 | awk -F‘-‘ ‘function ip2n(ip, n,c){split(ip,a,".");for(c=1;c<=4;c++)n=n*256+a[c];return n}function n2ip(n, ip,c){ip=n%256;for(c=3;c>0;c--){n=int(n/256);ip=(n%256)"."ip}return ip}{s=ip2n($1);e=ip2n($2);[backcolor=Yellow]while(s<=e)[/backcolor]print [backcolor=Cyan]n2ip(s++)[/backcolor]}‘
111.0.255.250
111.0.255.251
111.0.255.252
111.0.255.253
111.0.255.254
111.0.255.255
111.1.0.0
111.1.0.1
111.1.0.2
111.1.0.3
111.1.0.4
111.1.0.5

【拓展】

 由于我学过postgreSQL。postgreSQL数据库拥有丰富的数据类型;用postgreSQL中的SQL来解决这类问题更好不过了。 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
postgres=# create table li0924(id int,ip_start inet,ip_stop inet);
CREATE TABLE
postgres=# insert into li0924 values (1,‘192.168.1.240‘,‘192.168.2.10‘);
INSERT 0 1
postgres=# select * from li0924;
id |   ip_start    |   ip_stop
----+---------------+--------------
  1 | 192.168.1.240 | 192.168.2.10
(1 row)
postgres=# select id, generate_series(0, ip_stop-ip_start)+ip_start as ip_new from li0924;
id |    ip_new
----+---------------
  1 | 192.168.1.240
  1 | 192.168.1.241
  1 | 192.168.1.242
  1 | 192.168.1.243
  1 | 192.168.1.244
  1 | 192.168.1.245
  1 | 192.168.1.246
  1 | 192.168.1.247
  1 | 192.168.1.248
  1 | 192.168.1.249
  1 | 192.168.1.250
  1 | 192.168.1.251
  1 | 192.168.1.252
  1 | 192.168.1.253
  1 | 192.168.1.254
  1 | 192.168.1.255
  1 | 192.168.2.0
  1 | 192.168.2.1
  1 | 192.168.2.2
  1 | 192.168.2.3
  1 | 192.168.2.4
  1 | 192.168.2.5
  1 | 192.168.2.6
  1 | 192.168.2.7
  1 | 192.168.2.8
  1 | 192.168.2.9
  1 | 192.168.2.10

  

awk文本处理案例二十六--IP段生成文本列表,布布扣,bubuko.com

awk文本处理案例二十六--IP段生成文本列表

原文:http://www.cnblogs.com/lottu/p/3573846.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!