从另一个列表中减去一个列表的最有效方法是什么?

时间:2011-09-30 18:51:19

标签: csv awk sed grep

当List_1中的项目与List_2中的项目完全匹配时,我尝试从List_2(100k行)中减去List_1(50k行)。我正在使用grep,具体来说:

grep -v -f List_1.csv List_2.csv > Magic_List.csv

我知道这不是最有效的方法,但是这是什么? sedawkcomm? SQL?我怎样才能以最有效的方式实现这一目标?

3 个答案:

答案 0 :(得分:4)

这是恕我直言的最有效方式之一,你需要添加 -F

grep -Fvf List_1.csv List_2.csv > Magic_List.csv

答案 1 :(得分:1)

最有效的方法是使用trie数据结构或哈希函数用于第二个列表以及第三个列表搜索中的每个项目。

答案 2 :(得分:0)

您必须对其进行基准测试才能找到最有效的方法。然而,这是comm的用途,所以我猜它会是一个很好的工具。

comm -13 List_1.csv List_2.csv > Magic_List.csv