我正在尝试对存储在文件中的大表进行排序.文件格式为(ID,intValue)
数据按照排序ID
,但我需要的是intValue
按降序对数据进行排序.
例如
ID | IntValue 1 | 3 2 | 24 3 | 44 4 | 2
到这张桌子
ID | IntValue 3 | 44 2 | 24 1 | 3 4 | 2
如何使用Linux sort
命令执行操作?或者你推荐另一种方式?
如何使用Linux sort命令进行操作?或者你推荐另一种方式?
正如其他人已经指出的,看到man sort
的-k
和-t
了解如何通过字符串中的一些特定元素进行排序命令行选项.
现在,sort
它还具有帮助排序可能不适合RAM的大文件的功能.即-m
命令行选项,它允许将已排序的文件合并为一个.(请参阅合并排序的概念.)整个过程非常简单:
将大文件拆分成小块.例如,使用split
带有-l
选项的工具.例如:
split -l 1000000 huge-file small-chunk
对较小的文件进行排序 例如
for X in small-chunk*; do sort -t'|' -k2 -nr < $X > sorted-$X; done
合并已排序的较小文件.例如
sort -t'|' -k2 -nr -m sorted-small-chunk* > sorted-huge-file
清理: rm small-chunk* sorted-small-chunk*
您唯一需要特别注意的是列标题.