从文件中提取包含大量字符串之一的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从文件中提取包含大量字符串之一的行相关的知识,希望对你有一定的参考价值。

假设我有10,000,000行的文件DATA。我有另一个文件IDS,包含100,000个字符串。我想从DATA中提取包含IDS中一个字符串的所有行。另一个条件是文件之间存在1:1的关系,因此每个ID都有一行DATA,每个DATA都有一个ID。

使用标准linux命令行实用程序执行此操作的最有效,最简单的方法是什么?

我的想法到目前为止:

  1. 构建一个巨大的正则表达式并使用grep(容易,可能会超出grep中的某些限制)
  2. 逐行浏览IDS并分别为每个字符串grep DATA,合并结果。 (容易,可能非常低效)
  3. 在python中构建IDS的hashmap,循环遍历DATA,提取ID并检查哈希映射(有点难)
答案
grep -F -f IDS DATA

不要错过-F:它可以防止将IDS解释为正则表达式,并且可以实现更高效的Aho-Korasick算法。

另一答案

如果IDS包含您需要在DATA中找到的确切字符串,每行一个字符串,请尝试使用

grep --file=IDS DATA > results

以上是关于从文件中提取包含大量字符串之一的行的主要内容,如果未能解决你的问题,请参考以下文章

VB.Net 向 SQLite-DB 写入大量数据

Redshift 有没有办法从一个文本块中提取所有 URL,每个 URL 都作为单独的行?

如何从具有由“|”分隔的字段的行中提取数据C++中的字符?

从文件夹中的所有文本文件中提取与模式匹配的行到单个输出文件

在列中查找字母并提取包含特定字母的行

如何通过C#中的特定片段从句子中提取整个单词?