grep 限制带上下文的输出数量

grep 限制带上下文的输出数量

如果我想在文件中找到一行并显示周围的上下文,我会使用grep -C

如果我还想将输出限制为前几次出现,我添加-m参数

问题是,grep在最后一次出现后就停止读取文件,而不显示该行之后的上下文,例如

grep -C 1 -m 2 -n "string" filename

将显示:

123:line before
124:string - first time
125:line after
--
--
789:line before
790:string - second time

行将791不会显示。这可能是正确的行为(搜索完成后立即停止阅读),但我如何才能显示完整的上下文?

答案1

我觉得这像是 bug。使用 grep 2.16 版时,我没有遇到与您相同的问题。

假设这是你使用的 grep 版本的一个错误,也许解决方法是使用 -B 和 -A 而不是 -C:

grep -A 1 -B 1 -m 2 -n “字符串” 文件名

相关内容