使用 ruby 脚本从大文件中删除几行


File 1: 1356775 lines
File 2: 9516 lines
文件

2 包含数字行,当在文件 1 中匹配时,应从该文件中删除这些行。例:

文件 1

34234323432 some useless stuff
23423432342 more useless stuff
98989898329 foo bar blah
65367389473 one two three

文件 2

234234323
653673894

新建文件

34234323432 some useless stuff
98989898329 foo bar blah

我现在的方法是

  1. 将整个 file2 内容读入数组
  2. 获取 File1 的第一行并提取前 8 个数字
  3. 遍历步骤 1 中的
  4. 整个数组,以查看步骤 1 中的 8 个数字是否匹配
  5. 如果数字不匹配,则将步骤 1 中的行写入新文件
  6. 如果它们匹配,则脱离循环,不要将行写入新文件
  7. 继续,直到没有更多行可从步骤2读取

但是,由于文件太大,因此执行此操作需要花费大量时间,因为对于 file1 中的每一行,我们正在循环遍历整个数组(9516 个元素(。有没有更简单的方法可以执行这种类型的文件操作,而无需将文件中的记录放入数据库表中。

在哈希中读取 file2,数字作为键,"true"作为值。哈希被设计为在查找时快速 - 比数组快得多。

您可以将 File1 的块读入内存,避免大量阻塞 IO。

相关内容

  • 没有找到相关文章

最新更新