当前位置:  开发笔记 > 运维 > 正文

排序大文件(10G)

如何解决《排序大文件(10G)》经验,为你挑选了1个好方法。

我正在尝试对存储在文件中的大表进行排序.文件格式为(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命令执行操作?或者你推荐另一种方式?



1> Dummy00001..:

如何使用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*

您唯一需要特别注意的是列标题.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有