打印 10GB 文件的唯一行

2024-01-09

我有一个 10GB 的文件,有 2 亿行。我需要获取该文件的唯一行。

My code:

 while(<>) {
     chomp;
     $tmp{$_}=1;
 }
 #print...

我只有2GB内存。我怎么解决这个问题?


正如我对大卫的回答发表评论时,数据库是可行的方法,但一个好的数据库可能是DBM::Deep http://p3rl.org/DBM%3a%3aDeep因为它是纯 Perl 且易于安装和使用;它本质上是一个与文件相关的 Perl 哈希值。

use DBM::Deep;
tie my %lines, 'DBM::Deep', 'data.db';

while(<>) {
    chomp;
    $lines{$_}=1;
}

这基本上是您已经拥有的,但哈希现在是与文件(此处为 data.db)绑定的数据库,而不是保存在内存中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打印 10GB 文件的唯一行 的相关文章

随机推荐

  • 将 zlib 过滤器与套接字对一起使用

    由于某种原因 zlib deflate过滤器似乎不适用于由生成的套接字对stream socket pair 从第二个套接字中可以读取的只是双字节 zlib 标头 之后的所有内容均为 NULL Example
  • 致命错误:调用未定义的方法 mysqli::error() [重复]

    这个问题在这里已经有答案了 我可以连接 但是当涉及到准备好的语句时 这就是我得到的错误 有什么问题吗 代码 Open connection db new mysqli DB HOST DB USER DB PASSWORD DB DATAB
  • 在 Swift 中将 CGFloat 转换为字符串

    这是我目前在 Swift 中将 CGFloat 转换为 String 的方法 let x Float Float CGFloat let y Int Int x let z String String y 有没有更有效的方法来做到这一点 您
  • 如何将数据库的结果显示到输入区域?

    正如您在我的 php 代码中看到的 我尝试通过 值 将数据库的结果回显到输入区域 但是这不断出现语法错误 有人可以
  • 如何防止在堆上创建对象?

    有谁知道如何在独立于平台的 C 代码中阻止在堆上创建对象 也就是说 对于 Foo 类 我想阻止用户这样做 Foo ptr new Foo 并且只允许他们这样做 Foo myfooObject 有人有什么想法吗 Cheers 尼克的回答 ht
  • 使用 Haskell 播放 wav 文件

    有没有一种简单 直接的方法可以使用某些库从 Haskell 播放 WAV 文件 并且可能使我可以一次播放许多声音 我知道 OpenAL 但我不是在编写一些高级音频合成程序 我只是想播放一些声音来进行一些小游戏 理想情况下 API 可能类似于
  • 如何使用 NX/Nrwl 为 Angular 创建应用程序特定配置?

    所以我有以下项目结构 apps car libs app car shared config 对于每个应用程序 我想提供不同的配置 可以在分组库中使用 export interface DefaultAppConfig language s
  • 如何让按钮看起来就像被按下一样?

    使用 VS2008 C Net 2 和 Winforms 如何使常规按钮看起来 按下 想象一下这个按钮是一个开 关开关 ToolStripButton有 Checked 属性 但常规 Button 没有 您可以用来获取此选项的一种方法是放置
  • ListFragment 的 FragmentPagerAdapter getItem 错误

    我看了很多代码 但无法弄清楚这一点 http developer android com reference android support v4 app FragmentPagerAdapter html http developer a
  • Hibernate 实体有一个通用基类吗?

    Hibernate 实体是否有一个通用基类 即具有 id 版本和其他通用属性的 MappedSuperclass 有什么缺点吗 Example MappedSuperclass public class BaseEntity private
  • 递归解析关联数组时如何检查 PHP 中的循环引用?

    我用循环引用创建了这个数组 arr array 1 gt one 2 gt two arr 3 arr 我有一个函数可以递归地打印出数组中的值 但我确实无法解决创建循环引用检查的问题 你怎么能这么做呢 我用于打印数组的当前函数复制如下 我没
  • 这个JSON的数据结构是怎样的?

    我试图使用 Gson 将 Json 解析为 Java 但是当我使用 fromJson 时 我总是得到 null 谁能帮我解释一下这个数据结构 谢谢 d results metadata uri https api datamarket az
  • 有没有办法用 Java 下载 Microsoft Azure 数据中心 IP 范围?

    我的问题类似于有没有办法以编程方式自动下载 Microsoft Azure 使用的最新 IP 范围 https stackoverflow com questions 28798014 ms azure automatically down
  • Tesseract 虚假空间识别

    我正在使用 tesseract 来识别序列号 这是可以接受的 存在常见问题 例如错误识别零和 O 6 和 5 或 M 和 H 除此之外 这个超正方体还向识别的单词添加了空格 而图像中没有空格 下图被识别为 HI 3H 这张图片的结果是 FB
  • opencv clahe参数解释

    我想知道 clahe 参数的正确解释i e clipLimit and tileGridSize 以及如何clipLimit值会影响图像的对比度以及选择时要考虑的因素 例如图像分辨率 物体尺寸 tileGridSize 提前致谢 这个问题是
  • MFMailComposeViewController 错误 [MC] 过滤邮件表帐户的捆绑包 ID

    我使用发送消息的标准功能MFMailComposeViewController My code if MFMailComposeViewController canSendMail let mail MFMailComposeViewCon
  • 在 GoDaddy 上安装 django 网站 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我以前从未部署过 Django 网站 我目前正在寻找在我的豪华 GoDaddy 帐户中进行设置 有人有
  • Rails - 删除满足条件的所有记录

    你如何以 Rails 方式编写 我有一个模型 经理 我想从 Managers 中删除满足 manager level 为 5 条件的所有记录 谢谢 我认为最好使用destroy而不是delete 因为 destroy 将从数据库中删除当前对
  • matplotlib Axes3D 中的 mayavi 3d 对象

    有时我发现自己对 matplotlib 的 mplot3d 中缺少某些渲染功能感到沮丧 在大多数情况下 我确实发现我可以在 mayavi 中得到我想要的东西 但如果只是为了美观 比如 LaTeX 化的标签以及与我的其他图形的视觉一致性 那么
  • 打印 10GB 文件的唯一行

    我有一个 10GB 的文件 有 2 亿行 我需要获取该文件的唯一行 My code while lt gt chomp tmp 1 print 我只有2GB内存 我怎么解决这个问题 正如我对大卫的回答发表评论时 数据库是可行的方法 但一个好