我有 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
.