2017-09-15 2 views
0

Sortierung habe ich eine Datei wie so:bash Zahlen mit Dezimalstellen

1.1 
3.2 
1.2 
1.10 

Ich möchte die Datei sortieren, so dass es wie so aussieht:

1.1 
1.2 
1.10 
3.2 

Mit anderen Worten: 1.10 größer als 1,2

ich habe versucht:

sort -nk 1,1 file 

Aber ich halte diese bekommen, was nicht, was ich will

1.1 
1.10 
1.2 
3.2 

Dank

+1

auf Linux (oder, genauer gesagt, mit GNU 'sort'), gibt es eine Option' -g' oder '--General-numeric-sort'. Ich habe nicht damit gespielt. –

+1

In zweiter Linie interessiert es Sie nicht, den Wert als Zahl zu behandeln, denn 1,10 ist numerisch gleich 1,1 und kleiner als 1,2. Also, die '-g' Option ist keine Hilfe. Die Option '-V' behandelt Komponenten als Komponenten einer Version. das funktioniert, wenn Sie es zur Verfügung haben. –

Antwort

1

Mit GNU Art ist:

sort -t "." -n -k1,1 -k2,2 file 

Ausgang:

 
1.1 
1.2 
1.10 
3.2 
+0

Dies funktioniert richtig, weil 10 nach 2 sortiert ist, was keine numerische Sortierung ist. In allgemeineren Kontexten, in denen die Zahlen eine größere Anzahl von Ziffern haben (12.1, 2.345) und insbesondere in Felder zwischen anderen Begrenzern eingebettet sind, könnte es schwierig werden: "a 12.1 b" usw. Ich bin mir nicht sicher, ob es ein einfaches ist fest für letzteres, außer '-V'. –

Verwandte Themen