我有一个巨大的 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
