这个循环需要时间,因为 main_file 中缺少条目。
while read line;do
cat main_file | grep "$line";
done<file
cat file
pattern_1
pattern_2
cat main_file
main pattern_1
main pattern_2
main pattern_2
答案 0 :(得分:2)
您当前的方法效率非常低 - 整个循环可以使用grep
选项在单个-f
中完成。
grep -Fxf file main_file
-F
将file
中的行视为字符串,而非模式-x
查找完全匹配的行(如果这是您想要的)-f file
从file
读取行并在main_file
只要文件很小,上述方法就能很好地工作。对于较大的文件,请使用awk
:
awk 'FNR==NR {hash[$1]; next} $2 in hash' file main_file
详情请看这篇文章 - 它还有其他解决方案: