Skip to main content
 首页 » 编程设计

python之使用另一个大文件过滤较小的文件

2025年05月04日11Free-Thinker

我有一个巨大的 csv 文件,其中包含大约 10^9 行,其中每行都有一对 ID,例如:

IDa,IDb 
IDb,IDa 
IDc,IDd 

调用这个文件1。我有另一个小得多的 csv 文件,大约有 10^6 行,格式相同。调用此文件 2。

我只想在 file2 中找到至少包含一个存在于 file1 某处的 ID 的行。

有没有快速的方法来做到这一点?我不介意它是在 awk、python 还是 perl 中。

请您参考如下方法:

$ cat > file2 # make test file2 
IDb,IDa 
$ awk -F, 'NR==FNR{a[$1];a[$2];next} ($1 in a&&++a[$1]==1){print $1} ($2 in a&&++a[$2]==1){print $2}' file2 file1 > file3 
$ cat file3 # file2 ids in file1 put to file3 
IDa 
IDb 
$ awk -F, 'NR==FNR{a[$1];next} ($1 in a)||($2 in a){print $0}' file3 file2 
IDb,IDa