有一道校招生的面试题,是要给一个很大的文件(不能全部放内存,比如1T)按行来排序和去重。

一种简单解决方案就是分而治之,先打大文件分词大小均匀的若干个小文件,然后对小文件排好序,最后再Merge所有的小文件,在Merge的过程中去掉重复的内容。

在Linux下实现这个逻辑甚至不用自己写代码,只要用shell内置的一些命令: split, sort就足够了。我们把这个流程用脚本串起来,写到shell脚本文件里。文件名叫sort_uniq.sh.#!/bin/bash

lines=$(wc -l $1 | sed 's/ .*//g')

lines_per_file=`expr $lines / 20`

split -d -l $lines_per_file $1 __part_$1

for file in __part_*

do

{

sort $file > sort_$file

} &

done

wait

sort -smu sort_* > $2

rm -f __part_*

rm -f sort_*

使用方法:./sort_uniq.sh file_to_be_sort file_sorted

这段代码把大文件分词20或21个小文件,后台并行排序各个小文件,最后合并结果并去重。

如果只要去重,不需要排序,还有另外一种思路:对文件的每一行计算hash值,按照hash值把该行内容放到某个小文件中,假设需要分词100个小文件,则可以按照(hash % 100)来分发文件内容,然后在小文件中实现去重就可以了。

php大文件怎么排序去重,简单实现大文件的排序和去重相关推荐

  1. java 文件url地址_简单的解析文件,取URL地址,并根据地址抓下页面

    /** * * 解析文件,取出URL地址 * */ public static void regexStr(){ String input="飞机但是http://mail.Sohu.com ...

  2. endnote的enl文件格式_endnoteenl文件丢失(一步简单还原丢失文件)

    如何安全找回丢失数据的方法 1. 下载并安装B计划数据恢复软件. 2. 运行恢复软件,点击"深度扫描". 深度扫描是绕过文件系统直接从硬盘.U盘.SD卡等设备底层恢复数据,因此使用 ...

  3. 安卓手机如何打开php文件夹,Android_Android中调用系统的文件浏览器及自制简单的文件浏览器,调用系统自带的文件浏览器- phpStudy...

    Android中调用系统的文件浏览器及自制简单的文件浏览器 调用系统自带的文件浏览器这很简单: /** 调用文件选择软件来选择文件 **/ private void showFileChooser() ...

  4. 服务器内文件大小排序,centos 如何查找大文件,文件排序方案大全

    本博客不欢迎:各种镜像采集行为,请尊重知识产权法律法规.大家都是程序员,不要闹得不开心. centos服务器,使用一段时间后,有的时候会报警:磁盘空间不足.解决方法就是:找到系统盘里面的大文件,然后删 ...

  5. python从入门到大神---4、python3文件操作最最最最简单实例

    python从入门到大神---4.python3文件操作最最最最简单实例 一.总结 一句话总结: python文件操作真的很简单,直接在代码中调用文件操作的函数比如open().read(),无需引包 ...

  6. 用python简单查找大文件

    以前清扫用户文件夹时,总是要一个文件夹文件夹的找,今天有空就用python简单的写了个脚本,来查找给定大小范围的文件. 废话不说,上代码. """该脚本用于在用户目录中查 ...

  7. python读取大文件目录_python简单读取大文件的方法

    python简单读取大文件的方法 更新时间:2016年07月01日 10:42:14 作者:holybin 这篇文章主要介绍了python简单读取大文件的方法,通过非常简单的方式实现对GB级别大文件的 ...

  8. MP4文件太大怎么变小?简单的方法是什么?

    MP4视频格式相信是大家见过最多的一个视频格式了,当我们遇到因为视频太大而无法进行使用的情况下,我们应该如何在不缩短视频时长的情况下,对视频进行压缩呢?西面将方法分享给大家,一起来看看吧! 使用工具: ...

  9. php打包压缩下载多大,php多文件打包压缩下载简单示例

    调用php中内置扩展ZipArchive类可以进行文件压缩打包下载,(PHP 5>=5.2.0,PHP 7,PECL zip>=1.1.0) 调用php中内置扩展ZipArchive类可以 ...

最新文章

  1. Keepalived+LVS+Nginx负载均衡之高可用
  2. STM32跑分?看看你的能跑多少分!
  3. HoloLens开发手记-硬件细节 Hardware Detail
  4. CASS软件学习笔记
  5. Visual C++ 时尚编程百例016(字体)
  6. HTML+CSS+JS实现echarts图表炫光分布地图动画
  7. Mysql读写锁保姆级图文教程
  8. linux32位运行64位程序,32位windows下可以运行的程序在64位linux下报错
  9. CSS面试题汇总(三)
  10. 如何重置IE浏览器?重置IE浏览器的方法
  11. 计算机excel中百分比怎么算,excel如何自动算百分比
  12. springboot接入微信,支付宝支付
  13. 关于IE浏览器的一些思路
  14. .NET 6 中的 Http Logging 中间件
  15. 论文阅读:VoltJockey: Breaching TrustZone by Software-Controlled Voltage Manipulation over
  16. oracle ocx加载错误,怎么对.ocx格式的文件进行注册加载?出现0x8002801c错误怎么办?...
  17. 回顾|领略云原生技术之美
  18. 雪球产品,场外雪球结构介绍
  19. 八、Linux全套大总结
  20. 概率论与数理统计学习笔记(6)——分布律,分布函数,密度函数

热门文章

  1. nyoj 239 月老的难题
  2. ASP Session的功能的缺陷以及解决方案
  3. 推荐时代的内容理解技术探索.pdf(附下载链接)
  4. 浙大PAT甲级1027. Colors in Mars (20)
  5. 通过prompt方法增强开放领域问答模型
  6. Android9很多游戏玩不了,安卓狂野飙车9玩不了应该如何解决
  7. python 运维包_python运维常用模块
  8. 东南亚ERP系统怎么样?
  9. java读取一个应用程序_Java IO – 在写入其他应用程序时读取一个大文件
  10. CCF 2018-3-1跳一跳