有没有办法加快 grep -v -f 的速度?

有没有办法加快 grep -v -f 的速度?

我有 2 个文件,A 有 600 万行,B 有 500 万行,我试图获取 A 中但 B 中缺少的行,grep -v -f B A但速度非常慢。有什么办法可以加快速度吗?

答案1

如果两个文件已排序(与当前文件位于相同的区域设置中),请使用此命令。

comm -23 A.txt B.txt

如果它们没有排序并且您的 shell 支持 ksh 样式的进程替换:

(export LC_ALL=C; comm -23 <(sort A.txt) <(sort B.txt))

LC_ALL=C获得确定性(且快速)的排序顺序)。

另请参阅不需要对文件进行排序的combine实用程序:moreutils

combine A.txt not B.txt

但要注意它会将整个文件加载到内存中。

答案2

如果像我一样,您需要 grep 查找文件中的行,其中 file1 和 file2 没有相同的行,但 file1 包含要 grep 的字符串,您也许可以sort,然后使用join.

相关内容