我有一个包含大文件的文件夹(每个文件几GB)。我想搜索PATTERN
这些文件。我可以用 or 来做到这grep
一点ack
:
$ grep -n 'PATTERN' /path/to/files/*.log
现在,我有一个包含所有行的列表,包括PATTERN
.但是,我需要一些区域包含这些行来查看上下文:发生之前的几行PATTERN
和发生之后的几行。我更愿意列出这些行块以及每个行的坐标(文件和行号)。怎样才能做到呢?
答案1
使用 gnu grep
grep -B <number_lines> -A <number_lines> -n 'PATTERN' /path/to/files/*.log
例如,要获取匹配的 grep 行上方的 6 行以及其后的 4 行:
grep -B 6 -A 4 -n 'PATTERN' /path/to/files/*.log
从man grep
上下文线控制
-A NUM, --after-context=NUM
在匹配行之后打印 NUM 行尾随上下文。
-B NUM, --before-context=NUM
在匹配行之前打印 NUM 行前导上下文。