查看文章
 
用 sort 对 ip 地址排序
2007-01-11 19:38

假设文件 ip.txt 中以每行一个IP的格式记录了很多IP地址,例如:
$ cat ip.txt 
21.3.145.67
1.0.0.1
255.232.12.67
166.111.8.28
166.111.8.29
1.2.3.4
4.3.2.1
127.0.0.1
255.255.255.255
123.54.32.67
211.7.45.234
192.168.0.1

使用如下命令则可对文件中的IP按照从小到大进行排序:
sort -t"." -k1,1n -k2,2n -k3,3n -k4,4n ip.txt 
1.0.0.1
1.2.3.4
4.3.2.1
21.3.145.67
123.54.32.67
127.0.0.1
166.111.8.28
166.111.8.29
192.168.0.1
211.7.45.234
255.232.12.67
255.255.255.255

要反过来排序,即从大到小排序,可以这样:
sort -t"." -k1,1nr -k2,2nr -k3,3nr -k4,4nr ip.txt 
255.255.255.255
255.232.12.67
211.7.45.234
192.168.0.1
166.111.8.29
166.111.8.28
127.0.0.1
123.54.32.67
21.3.145.67
4.3.2.1
1.2.3.4
1.0.0.1

下面对上述两个命令稍作解释:
(1)-t"." 表示用“.”分隔要排序的 Field
(2)-k1,1n 表示用(1)中得到的第一个 Field 作为 Key 来排序,在这里就是IP的第一段,n表示把这个Field排序时把其作为数值来对待。
(3)-k1,1nr表示反过来排序
了解以上几点,对命令就比较清楚了,就是优先用ip的第一段进行排序,其次为第二段,然后第三段,最后考虑第四段。


类别:python/shell/php/ruby||添加到搜藏 |分享到i贴吧|浏览(619)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu