grep多个文件时,如何在第一次匹配后停止?

bob*_*bob 11 grep

我在文本文件中有一个模式列表,我使用bzgrep来匹配多个文件:

for pattern in $(cat ~/patterns.txt); do echo $pattern; bzgrep -i $pattern *.bz2; done
Run Code Online (Sandbox Code Playgroud)

如何使bzgrep(grep)在当前模式的第一次匹配后停止(我需要它完全停止,而不是停止当前文件被grep'ed)并继续下一个模式.我已经读过"-m 1"参数,但我认为它只会在当前文件上停止.有任何想法吗?

谢谢

Mar*_*usQ 13

管道输出grep到head -n 1; 将拉动(并传递)第一行并忽略其余部分(即终止源管道).


bri*_*zil 5

for pattern in $(< ~/patterns.txt); do
  echo "$pattern"
  for i in *.bz2; do
    bzgrep -i "$pattern" "$i" && break
  done
done
Run Code Online (Sandbox Code Playgroud)

您可能希望向grep添加-H以显示filename:line而不仅仅是line.