2013-09-05 28 views
12

由第5列排序CSV文件中的文件看起来像使用bash

5.1,3.5,1.4,0.2,Banana 
4.9,3.0,1.4,0.6,Apple 
4.8,2.8,1.3,1.2,Apple 

,我需要有它是

4.9,3.0,1.4,0.2,Apple 
4.8,2.8,1.3,1.2,Apple 
5.1,3.5,1.4,0.2,Banana 

我一直在尝试使用

sort -t, -k5 file.csv > sorted.csv 

所有它的确是让它

5.1,3.5,1.4,0.2,Banana 
4.8,2.8,1.3,1.2,Apple 
4.9,3.0,1.4,0.6,Apple 

我该如何做到这一点?它似乎根本没有分类。

+7

无法重现。你的命令在这里工作正常 – user000001

+0

这个问题似乎是脱离主题,因为它是关于bash的,属于[unix.se]。 –

+0

同样在这里。对我来说排序很好。 –

回答

3

GNU排序是语言环境敏感,可能会导致怪异。请尝试以下,看看它是否有差别:

LC_ALL=C sort -t, -k5 file.csv > sorted.csv 
+1

欢迎使用堆栈溢出。请尽快阅读[关于]页面。偶尔你是正确的(或者,即使你的语言环境设置为像'en_US.UTF-8'这样的东西),语言环境肯定会影响某些数据的排序顺序。然而,很难看出场所会如何影响这一点 - 事实上,很难重现问题,更不用说将其分类(双关语)。 –

+0

这正是我所需要的。谢谢。 – aioobe

7

这是你需要有什么是

# sort -t . -nrk2 sorted.csv 
4.9,3.0,1.4,0.6,Apple 
4.8,2.8,1.3,1.2,Apple 
5.1,3.5,1.4,0.2,Banana