grep -vf对大文件来说太慢了

时间:2017-03-09 18:04:56

标签: bash performance shell awk grep

我正在尝试使用存储在文件filter.txt中的模式从data.txt过滤数据。如下所示,

''

对于filter.txt中的30-40K行和data.txt中的~300K行,这个grep需要10-15分钟。

有没有办法加快这个?

data.txt中

grep -v -f filter.txt data.txt > op.txt

filter.txt

data1
data2
data3

op.txt

data1

这适用于codeforester提供的解决方案,但是当filter.txt为空时失败。

1 个答案:

答案 0 :(得分:6)

根据Inian's帖子中的related解决方案,此awk命令可以解决您的问题:

awk 'FNR==NR {hash[$0]; next} !($0 in hash)' filter.txt data.txt > op.txt