确定两个排序列表是否包含唯一元素的最快方法

Hoo*_*ked 6 search text-processing sort

我有两个排序的文件AB其中的大小A远大于B,例如 A 是 100GB 而 B 是 50MB。我想很快确定是否有任何行B中包含的A,一旦匹配时停止。我目前有一个用于此的 python 脚本,但是当该过程必须针对不同的B's重复数千次时,它运行缓慢。

Kev*_*vin 1

使用,您可以使用和 fifocomm获取在第一次匹配时返回的脚本:head

#!/bin/bash -e 

[ -p tmpfifo ] || mkfifo tmpfifo
comm -12 A B | head -n1 >tmpfifo &

# If this wc is zero, no matches.  Otherwise, a match was found. 
# You can use this directly in the script, echo it, 
# change the script exit value, or however else you need to use it.
wc -l tmpfifo 
Run Code Online (Sandbox Code Playgroud)

目前,这将继续在后台执行通信,我很难找到PID杀死的权利($!正在给予head而不是杀死comm)。如果您确定这是唯一正在运行的通信,则可以使用killall,但如果其他通信正在运行,则可能存在危险。