如何使用grep显示搜索结果匹配行的上下n行内容?含Kubernetes清单文件实操场景
嘿,我来帮你捋清楚这两个场景的解决方案!
通用场景:用grep显示匹配行上下n行内容
其实grep本身就自带了非常实用的上下文显示参数,不用额外折腾其他工具:
- 显示匹配行上方n行:使用
-Bn参数(B是Before的缩写),比如要显示上方3行就写-B3 - 显示匹配行下方n行:使用
-An参数(A是After的缩写) - 同时显示匹配行上下n行:使用
-Cn参数(C是Context的缩写),效果等价于-Bn -An
举个直观的例子,在test.log里搜索warning关键词,同时显示上下2行内容:
grep -C2 "warning" test.log
先给你指出个小问题:你当前的命令里,把kube-apiserver的启动参数(比如--authorization-mode=Node,RBAC)错误地写到了grep后面,这些参数不属于grep命令,会被当成文件名处理,肯定跑不通。
正确的做法很简单,直接用grep的-Bn参数来显示匹配行上方的n行内容。比如你想查看authorization相关内容,同时显示上方3行,命令应该是:
grep -i -B3 "authorization" /etc/kubernetes/manifests/kube-apiserver.yaml
参数解释:
-i:忽略大小写,确保能匹配到Authorization、AUTHORIZATION等不同大小写的内容-B3:显示匹配到的行上方3行内容,你可以把3改成自己需要的n值- 直接跟上目标文件路径即可,不用多余的
cat管道,grep本身就能直接读取文件
如果还想同时查看匹配行下方的内容,比如下方4行,就加上-A4参数:
grep -i -B3 -A4 "authorization" /etc/kubernetes/manifests/kube-apiserver.yaml
内容的提问来源于stack exchange,提问作者ERJAN
相关产品推荐
相关产品推荐

