我有一個包含超過一千個條目的大型數據文件。我想對它們進行排序,但保留原始的行號。例如,Unix:如何對dat文件進行排序並保留原始行號
1:100
2:120
3:10
4:59
其中第一個數字是未保存在數據文件中的行號,用冒號分隔實數。我想對它進行排序,並保持綁定到其原線行號,用的輸出:
2:120
1:100
4:59
3:10
如果可能的話,我想做到這一點,而無需創建另一個文件,和編號他們的手不我正在使用的數據大小的選項。
我有一個包含超過一千個條目的大型數據文件。我想對它們進行排序,但保留原始的行號。例如,Unix:如何對dat文件進行排序並保留原始行號
1:100
2:120
3:10
4:59
其中第一個數字是未保存在數據文件中的行號,用冒號分隔實數。我想對它進行排序,並保持綁定到其原線行號,用的輸出:
2:120
1:100
4:59
3:10
如果可能的話,我想做到這一點,而無需創建另一個文件,和編號他們的手不我正在使用的數據大小的選項。
給定文件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
這正是我期待的!感謝您和paulsm4的'關鍵'命令。我已經完全忘記了將這種情況轉移到第二欄,我覺得有點傻! –
很高興提供幫助。如果此答案爲您解決問題,請將其標記爲「已接受」,以便其他人不會認爲您仍需要解決方案才能回答您的問題。 – Simon
'sort -k = POS1,POS2'應該正是你要找的。有關更多詳細信息,請參閱「男士排序」 – paulsm4