2010-06-24 113 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