我有可能需要按1-n鍵排序的大文件。其中一些鍵可能是數字鍵,有些則可能不是數字鍵。這是一個固定寬度的柱狀文件,因此沒有定界符。有沒有一種很好的方法可以用Unix排序呢?使用一個鍵,就像使用“ -n”一樣簡單。我已經閱讀了手冊頁并簡短地搜索了Google,但是沒有找到一個很好的例子。我將如何實現這一目標?注意:由于文件大小可能,我排除了Perl。這將是不得已的辦法。
3 回答

斯蒂芬大帝
TA貢獻1827條經驗 獲得超8個贊
不過請注意:
如果要主要按字段3排序文件,其次要按字段2排序,則不要這樣:
sort -k 3 -k 2 < inputfile
您想要這個:
sort -k 3,3 -k 2,2 < inputfile
第一個按從字段3的開始到行尾的字符串對文件排序(可能是唯一的)。
-k, --key=POS1[,POS2] start a key at POS1 (origin 1), end it at POS2
(default end of line)

30秒到達戰場
TA貢獻1828條經驗 獲得超6個贊
-k選項就是您想要的。
-k 1.4,1.5n -k 1.14,1.15n
將在第一個字段中使用字符位置4-5(固定寬度都是一個字段),并將其作為第一個鍵進行數字排序。
第二個鍵也是第一個字段中的字符14-15。
(編輯)
示例(我所擁有的都是DOS / cygwin方便的):
dir | \cygwin\bin\sort.exe -k 1.4,1.5n -k 1.40,1.60r
對于數據:
12/10/2008 01:10 PM 1,564,990 outfile.txt
按數字對目錄列表進行排序(按月號(pos 4-5),然后按文件名(pos 40-60)反向)。由于沒有選項卡,因此所有字段都為1。
- 3 回答
- 0 關注
- 565 瀏覽
添加回答
舉報
0/150
提交
取消