【发布时间】:2017-07-30 20:32:55
【问题描述】:
我正在尝试使用存储在文件 filter.txt 中的模式过滤 data.txt 中的数据。如下所示,
grep -v -f filter.txt data.txt > op.txt
对于 filter.txt 中的 30-40K 行和 data.txt 中的约 300K 行,此 grep 需要超过 10-15 分钟。
有什么办法可以加快速度?
数据.txt
data1
data2
data3
filter.txt
data1
op.txt
data2
data3
这适用于 codeforester 提供的解决方案,但当 filter.txt 为空时会失败。
【问题讨论】:
-
请包含两个文件中的示例行。你可能想看看这篇对这个问题有广泛讨论的帖子:stackoverflow.com/questions/42239179/…
-
感谢您的链接。关于类似问题的良好讨论。 awk 'FNR==NR{哈希[$1]; next}$2 in hash' file1.txt FS='|' file2.txt 适用于匹配行但需要反转结果。不知道如何使它适用于反转匹配。
标签: bash performance shell awk grep