我想从一个大型文本文件(infile2.txt)中提取与中等大小文本文件(infile1.txt)中的行匹配的所有行。正确的匹配应在行的开头进行。还应提取infile2.txt中匹配后的三条线。
下面的代码就是这样做的,但速度慢得令人痛苦:
for i in $(cat infile1.txt); do cat infile2.txt | grep -A3 ^$i >> results.txt; done &
我认为,在循环的每一次迭代中,infile2.txt的加载构成了瓶颈。您将使用哪些代码替代方案来加快字符串提取?
发布于 2015-08-03 11:59:10
使用-f
(模式从文件)标志到grep
,如下所示
grep -A3 -f infile1.txt infile2.txt > result.txt
可能会有很大帮助。
如果输入是普通字符串(而不是正则字符串),那么使用-F
(用于固定字符串)也可能有帮助。
根据各种因素,--mmap
选项也可能有一定的用途。
除此之外,搜索速度慢的原因可能与文件大小、磁盘速度等有关。
https://stackoverflow.com/questions/31795202
复制相似问题