如果我想在文件中找到一行并显示周围的上下文,我会使用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 “字符串” 文件名