2017-10-19 99 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 

(通过有序的前两个字段 '串联')。