2013-09-05 12 views
12

Il file si presenta comeOrdinamento file CSV entro il 5 colonna utilizzando 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 

e ho bisogno di farlo essere

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 

Ho cercato di utilizzare

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

Tutto lo fa è lo

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 

Come faccio a fare così? Non sembra che lo stia ordinando affatto.

+7

non può riprodurre. Il tuo comando funziona bene qui – user000001

+0

Questa domanda sembra essere fuori tema perché riguarda bash e appartiene a [unix.se]. –

+0

Lo stesso qui. Ordina bene per me. –

risposta

3

L'ordinamento GNU è sensibile alle impostazioni internazionali, che può causare stranezze. Provare quanto segue e vedere se fa la differenza:

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

Benvenuti in Stack Overflow. Si prega di leggere la pagina [Informazioni] a breve. È corretto che occasionalmente (o anche sempre se la tua locale è impostata su qualcosa come "en_US.UTF-8', come è mia), le impostazioni locali possono certamente influire sull'ordinamento di alcuni dati. Tuttavia, è difficile vedere come la locale possa influenzare questo - anzi, è difficile duplicare il problema, per non parlare di risolverlo (gioco a metà inteso). –

+0

Questo era esattamente ciò di cui avevo bisogno. Grazie. – aioobe

7

È questo ciò che è necessario disporre che sia

# 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 
Problemi correlati