2013-09-05 58 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