我在命令行工具中遇到了一个非常奇怪的问题。基本上我试图搜索匹配的单词并从文件中获取文本。所以我有 80,000 字的 file1:
aaa
bbb
ccc
ddd
...
我有 600,000 行文本的 file2:
id: hhh, address: xxxx, content: yyyy
id: aaa, address: zzzz, content: eeee
id: jjj, address: qqqq, content: oooo
id: ccc, address: nnnn, content: tttt
...
我需要在file2中找到包含file1中单词的文本,所以输出如下:
id: aaa, address: zzzz, content: eeee
id: ccc, address: nnnn, content: tttt
...
现在我正在使用命令:cat file2 | grep -f file1 > newfile.
我也测试了该方法,它运行得很好,它的运行速度也没有什么奇怪的。但是,当我在那个真实文件上运行这个命令时,它超级慢......直到现在它已经运行了 12 个小时并且终端中的命令仍在运行!当我签入新文件时,只生成了 2000 行文本,这意味着如果我需要获得 80,000 行的全部结果,我需要 12 小时的 40 次,这绝对是荒谬的。
另外,我尝试在 file2 上进行实验,即 600,000 行文本。我运行了一个类似的命令cat file2 | grep -w 'aaa'
,不到一秒就立即得到结果。我还尝试了一个包含几个单词的文件,它也立即得到。所以我不明白,为什么这 80,000 字要花很长时间。即使搜索每个单词需要一秒钟的时间,它仍然只需要不到 20 个小时,这仍然比我目前遇到的情况要快得多......有人能给我提示吗?
我