用 grep 显示匹配行及其上下各三行需加 -C 3 参数,等价于 -A 3 -B 3;可组合 -n、--color=always、-i、--group-separator 等提升实用性,且自动处理上下文重叠与边界情况。

用 grep 显示匹配行及其上下各三行,直接加 -C 3 参数即可。
使用 -C 参数控制上下文行数
-C(或 --context)是 grep 专门用于显示上下文的选项。数字表示匹配行前后各显示多少行:
-
grep -C 3 "ERROR" app.log→ 匹配含 "ERROR" 的行,并显示它上面3行、下面3行 - 等价写法:
grep -A 3 -B 3 "ERROR" app.log(-A是 after,-B是 before) - 若只要上方3行,用
-B 3;只要下方3行,用-A 3
配合其他常用参数提升实用性
实际查日志时,常需组合使用以提高可读性和准确性:
- 加
-n显示行号:grep -C 3 -n "timeout" access.log - 加
--color=always高亮匹配关键词(终端支持时) - 加
-i忽略大小写:grep -Ci 3 "error" - 加
--group-separator="---"分隔不同匹配块(避免上下文重叠时混淆)
注意上下文重叠与边界情况
当多个匹配行靠得很近,上下文会自动合并,不会重复输出中间行:
- 比如第10行和第12行都匹配,
-C 3不会输出两遍第11行,而是合并成连续块 - 文件开头或结尾处不足3行时,只显示存在的行,不会报错或补空
- 想强制每组上下文严格隔离,可用
grep -C 3 --no-group-separator或配合awk进一步处理
替代方案:less + grep 更适合交互式查看
如果日志很大,建议先用 less 打开再搜索:
-
less app.log→ 进入后输入/ERROR搜索,再按Ctrl+G或Shift+G定位 - 在
less中按Esc+v可调出编辑器,或用&过滤模式(如&ERROR) - 配合
less -N显示行号,更方便定位上下文

















