IP地址按數字大小排序

以下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,表示反序;



記錄下這個實用的小技巧,避免遺忘;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章