2010-06-24 114 views
8

我想按升序排序整個文件。如何按升序(列)重新排序文件?

file.txt的是這樣的:

a 12.24 text 

a 1.45 text 

b 5.12 text 

我想它看起來就像這樣:

a 1.45 text 

b 5.12 text 

a 12.24 text 
+0

爲什麼在使用Python時使用awk?此外,這是一個24小時的格式? – 2010-06-24 19:02:46

+1

在Python 2.6中試試這一行:open(r'temp2.​​txt','w')。writelines(sorted(open(r'temp.txt','r')。readlines(),key = lambda line :float(line.split()[1]))) – 2010-06-24 19:10:52

回答

7

使用sort Linux的程序,而不是awk。正是:

sort -n -k 2 <filename> 
+1

爲了澄清,-n和-g之間的區別在這裏解釋:http://stackoverflow.com/questions/1255782/whats-the-difference-between- general-numeric-sort-and-numeric-sort-options-i。 – mbq 2010-06-24 19:24:17

+0

請注意,這裏假設時間是24小時格式。 – Costa 2011-08-30 15:02:04

15

sort命令可能會滿足您的需求比awk更好。

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

-g他們比喻爲數字而不是字符串。而第二列則排序爲-k 2

+0

請注意,這假定時間是24小時制。 – Costa 2011-08-30 15:01:37

+0

如果兩行可以有相同的時間,'-k2'會比較整行來排序它們。添加'-s'會關閉這個怪癖。 – hemflit 2013-06-24 23:48:05