2017-10-19 101 views
0

來源:以升序排列多列

10,10,7.17,1.077383,0.00428382 
10,12,7.45,1.177068,0.00390197 
10,4,6.86,1.184806,0.00489828 
10,6,6.98,1.106846,0.00463645 
10,8,7.09,1.106254,0.00451672 
12,10,6.71,1.224453,0.00506310 
12,12,6.96,1.141856,0.00446641 
12,4,6.41,1.510563,0.00590838 
12,6,6.51,1.187841,0.00548915 
12,8,6.62,1.217152,0.00532222 

期望的結果

10,4,6.86,1.184806,0.00489828 
10,6,6.98,1.106846,0.00463645 
10,8,7.09,1.106254,0.00451672 
10,10,7.17,1.077383,0.00428382 
10,12,7.45,1.177068,0.00390197 
12,4,6.41,1.510563,0.00590838 
12,6,6.51,1.187841,0.00548915 
12,8,6.62,1.217152,0.00532222 
12,10,6.71,1.224453,0.00506310 
12,12,6.96,1.141856,0.00446641 

我怎麼排序的CSV前兩列這樣我得到升序期望的結果。

10,4 
10,6 
10,8 
10,12 

sort -k1,2 -n -t,預期

10,4,6.86,1.184806,0.00489828 
10,6,6.98,1.106846,0.00463645 
10,8,7.09,1.106254,0.00451672 
12,4,6.41,1.510563,0.00590838 
12,6,6.51,1.187841,0.00548915 
12,8,6.62,1.217152,0.00532222 

你可以看到,10,10,7.17,1.077383,0.00428382缺少

回答

0

要回答你的問題,你應該這樣做:

sort -t, -k1,1n -k2,2n yourFile.csv 

在命令中的問題是,-n確實沒有適用於您試圖解決的領域; -k1,2n會這樣做,但它不能解決你的問題,因爲它會將兩個字段放在一起(例如10,10,10,12),並且可能因爲你的語言環境而無法工作。

如果您嘗試

LC_ALL=C sort -t, -k1,2n yourFile.csv 

你會得到這樣的:

10,10,7.17,1.077383,0.00428382 
10,12,7.45,1.177068,0.00390197 
10,4,6.86,1.184806,0.00489828 
10,6,6.98,1.106846,0.00463645 
10,8,7.09,1.106254,0.00451672 
12,10,6.71,1.224453,0.00506310 
12,12,6.96,1.141856,0.00446641 
12,4,6.41,1.510563,0.00590838 
12,6,6.51,1.187841,0.00548915 
12,8,6.62,1.217152,0.00532222 

(通過有序的前兩個字段 '串聯')。