2010-06-24 2 views
8

Ich möchte eine ganze Datei nach aufsteigender Reihenfolge sortieren.Wie kann ich eine Datei in aufsteigender Reihenfolge (Spalte) neu anordnen?

datei.txt sieht wie folgt aus:

a 12.24 text 

a 1.45 text 

b 5.12 text 

Ich möchte es so aussehen:

a 1.45 text 

b 5.12 text 

a 12.24 text 
+0

Warum verwenden Sie awk, wenn Sie Python verwenden können? Ist das ein 24-Stunden-Format? –

+1

Probieren Sie dieses Einzeiler in Python 2.6: öffnen (r'temp2.txt ',' w '). Writelines (sortiert (offen (r'temp.txt', 'r'). Readlines(), Schlüssel = Lambda-Zeile : float (line.split() [1]))) –

Antwort

7

Verwenden Sie das sort Linux-Programm, nicht awk. Genau:

sort -n -k 2 <filename> 
+1

Zur Verdeutlichung wird hier der Unterschied zwischen -n und -g erklärt: http://stackoverflow.com/questions/1255782/whats-the-difference-between- general-numeric-sort-and-numeric-Sortieroptionen-i. – mbq

+0

Beachten Sie, dass davon ausgegangen wird, dass die Zeiten im 24-Stunden-Format sind. – Costa

15

Der sort Befehl kann Ihre Bedürfnisse besser als awk.

# sort -gk 2 test.txt 
a 1.45 text 
b 5.12 text 
a 12.24 text 

-g vergleicht sie als Zahlen anstelle von Strings. Und -k 2 sortiert in der zweiten Spalte.

+0

Beachten Sie, dass davon ausgegangen wird, dass die Zeiten im 24-Stunden-Format sind. – Costa

+0

Wenn zwei Zeilen dieselbe Zeit haben können, wird '-k2' auf das Vergleichen ganzer Zeilen zurückgreifen, um sie zu sortieren. Das Hinzufügen eines "-s" würde diese Eigenart ausschalten. – hemflit

Verwandte Themen