类似 grep 的命令,可以查找匹配行及其周围的行

19

grep命令非常强大,我经常使用它。

有时我需要使用grep在许多文件中查找某些内容,来查找我几乎记不得的字符串,帮助自己使用-i(忽略大小写)选项,-r(递归)和-v(排除)。

但是我真正需要的是从grep获得特殊输出,可以突出显示匹配的行以及相邻行(给定匹配的行后面的2行和前面的2行)。

是否有一种方式可以在bash中获得这种结果?


顺便问一下,你正在使用什么操作系统?例如Solaris 10具有非常有限的grep功能,无法完成该任务。 - chotchki
3个回答

22

Grep本身可以做到这一点。

grep -A 2 -B 2 foo myfile.txt

4
别忘了-C 2代表-A 2 -B 2 - Gringo Suave

17

大多数grep命令都允许使用"上下文"标志,使其更易读:

grep --context=3 foo myfile.txt

太棒了,这比第一个答案更清晰。而且正是我要找的。@Gringo Suave,这是你-C选项的非缩写形式。 - ztank1013

7
您可以省略-C选项。
grep -2 foo myfile.txt

等于

grep -C 2 foo myfile.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接