以下IP地址,我想让每段以点号分隔的IP都按照数字大小排序,而不是字符大小排序:
1.1.1.1
1.1.2.1
1.1.10.2
1.2.108.1
1.3.2.1
2.1.20.1
使用linux sort命令排序查看结果:
root@ ~$ cat ip
1.1.1.1
1.1.2.1
1.1.10.2
1.2.108.1
1.3.2.1
2.1.20.1
root@ ~$ sort ip
1.1.10.2
1.1.1.1
1.1.2.1
1.2.108.1
1.3.2.1
2.1.20.1
可以看到第三列10、1、2这个是按照字符串大小排序的,不是我们想要的;
换个方式:
root@ ~$ sort -t'.' -k1,1n -k2,2n -k3,3n -k4,4n ip
1.1.1.1
1.1.2.1
1.1.10.2
1.2.108.1
1.3.2.1
2.1.20.1
-t参数表示以点号分隔IP地址,因此一共分为四段,然后每段分别排序;
-k[1-4]表示排序的次数,[1-4]n中的数字表示取第一个字段排序,n表示以数字从小到大排序,也可以写成nr,表示反序;
记录下这个实用的小技巧,避免遗忘;