使用大量替换对在文本文件中执行大量替换

4 text replace sed large-files

鉴于:

  • a.txt包含数百万行的文件(比如每行一个句子)(2.6 GB!
  • b.txt包含830k行对的文件[word1] [word2]

题:

如何在巨大的文本文件中为每个830k元组(w1,w2)中的word2执行每个word1的最有效替换?

像sed,perl,python等天真的方法需要数周才能完成.是否存在(可能基于并行化)方法来执行替换的负载?

idr*_*sid 5

我会在python中做到这一点,但如果你正确算法,任何其他语言都可以完成这项工作.整个技巧是将字对(文件b.txt)保存在内存中,并在一次通过中检查大文件.由于I/O操作比从RAM读取慢得多,因此该方法的性能将为O(file1)+ O(file2)

在伪代码中:

myMap = {}
for line in fileB:
  myMap[1st word of line] = 2nd word of line

for line in fileA
  for word in line
    if myMap contains word
      replace word with myMap[word]
Run Code Online (Sandbox Code Playgroud)

我想这是你能得到的最快的.