2013-09-01 32 views
1

我有一個包含超過一千個條目的大型數據文件。我想對它們進行排序,但保留原始的行號。例如,Unix:如何對dat文件進行排序並保留原始行號

1:100 
2:120 
3:10 
4:59 

其中第一個數字是未保存在數據文件中的行號,用冒號分隔實數。我想對它進行排序,並保持綁定到其原線行號,用的輸出:

2:120 
1:100 
4:59 
3:10 

如果可能的話,我想做到這一點,而無需創建另一個文件,和編號他們的手不我正在使用的數據大小的選項。

+1

'sort -k = POS1,POS2'應該正是你要找的。有關更多詳細信息,請參閱「男士排序」 – paulsm4

回答

2

給定文件test.dat

100 
120 
10 
59 

...命令:

$ cat -n test.dat | sort --key=2 -nr 
    2 120 
    1 100 
    4 59 
    3 10 

...給人的輸出,你似乎在尋找(雖然由製表符分隔的字段,如果需要,可以很容易地更改):

$ cat -n test.dat | sort --key=2 -nr | sed -e's/\t/:/' 
    2:120 
    1:100 
    4:59 
    3:10 
+0

這正是我期待的!感謝您和paulsm4的'關鍵'命令。我已經完全忘記了將這種情況轉移到第二欄,我覺得有點傻! –

+0

很高興提供幫助。如果此答案爲您解決問題,請將其標記爲「已接受」,以便其他人不會認爲您仍需要解決方案才能回答您的問題。 – Simon

相關問題