以下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,表示反序;
記錄下這個實用的小技巧,避免遺忘;