4 text replace sed large-files
鉴于:
a.txt包含数百万行的文件(比如每行一个句子)(2.6 GB!b.txt包含830k行对的文件[word1] [word2]题:
如何在巨大的文本文件中为每个830k元组(w1,w2)中的word2执行每个word1的最有效替换?
像sed,perl,python等天真的方法需要数周才能完成.是否存在(可能基于并行化)方法来执行替换的负载?
我会在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)
我想这是你能得到的最快的.