file1 > word_list.txt > 超过 1,000,000 行
file2 > list.txt > 超过 1,000,000 行
我有一个包含单词列表的文件。我想从一个大文本文件中删除此文件中所有单词的所有出现。
Example:
File 1
111
222
文本文件样本
111
222
333
444
555
Output
333
444
555
对于超过 100 万行的大文件,此代码会非常慢:
sed -e "$(sed 's:.*:s/&//ig:' word_list.txt)" list.txt
解决这个问题最合适的方法是什么?
假设,
文件的结构是每行一个单词,每个文件中的单词都是唯一的,文件可以排序(或已经按排序顺序)
$ comm -13 file1 file2
333
444
555
-1 suppress lines unique to file1
-3 suppress lines that appear in both files
这将为您提供 file2 中不在 file1 中的唯一单词(即设置差异 file2 \ file1)
这应该是最快的方法。如果您可以测试替代解决方案,请发布时间。
或者,
$ awk 'NR==FNR{a[$0]; next} !($0 in a)' file1 file2
只要你有足够的内存就应该可以工作。这不需要排序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)