从Bash中另一个更大的文件中查找文件行的最快方法

我有两个文件,file1.txt和file2.txt。  file1.txt有大约14000条线,file2.txt大约有20亿条线。 每行file1.txt有一个字段f1,而file2.txt有3个字段,f1通过f3,以分隔|。


我想从中找到匹配项的所有行(如果我们不想花费额外的时间来拆分的值,则可以找到行file2.txt中f1的任何行)。file1.txtf2file2.txtfile2.txt


file1.txt(大约14000行,未排序):


foo1

foo2

...

bar1

bar2

...

file2.txt(大约20亿行,未排序):


date1|foo1|number1

date2|foo2|number2

...

date1|bar1|number1

date2|bar2|number2

...

预期输出:


date1|foo1|number1

date2|foo2|number2

...

date1|bar1|number1

date2|bar2|number2

...

这是我尝试过的,似乎要花几个小时才能运行:


fgrep -F -f file1.txt file2.txt > file.matched

我想知道是否有更好,更快的方法来执行常见的Unix命令或小的脚本。


侃侃无极
浏览 648回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP