有没有更快的方法来grep模式或提高while循环的速度?

时间:2017-04-26 05:11:33

标签: linux shell unix

这个循环需要时间,因为 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

1 个答案:

答案 0 :(得分:2)

您当前的方法效率非常低 - 整个循环可以使用grep选项在单个-f中完成。

grep -Fxf file main_file
  • -Ffile中的行视为字符串,而非模式
  • -x查找完全匹配的行(如果这是您想要的)
  • -f filefile读取行并在main_file
  • 中查找这些行

只要文件很小,上述方法就能很好地工作。对于较大的文件,请使用awk

awk 'FNR==NR {hash[$1]; next} $2 in hash' file main_file

详情请看这篇文章 - 它还有其他解决方案: