假设文件 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的第一段进行排序,其次为第二段,然后第三段,最后考虑第四段。