grep一个文件,但显示几条周边线?

我想grep一个string,还要显示前面的五行和下面的五行以及匹配的行。 我将如何能够做到这一点?

对于BSDGNU grep您可以使用-B num来设置匹配之前的行数和-A num匹配后的行数。

 grep -B 3 -A 2 foo README.txt 

如果你想要使用-C num之前和之后相同的行数。

 grep -C 3 foo README.txt 

这将显示前3行和后3行。

-A-B将起作用, -C n (对于n行上下文)或者-n (对于n行上下文)。

ack与grep类似的参数工作,并接受-C 。 但是通过代码search通常更好。

 grep astring myfile -A 5 -B 5 

这将grep“myfile”为“astring”,每场比赛之前和之后显示5行

我通常使用

 grep searchstring file -C n # n for number of lines of context up and down 

许多像grep这样的工具也有非常棒的man文件。 我发现自己指的是grep的man page,因为你可以用它做很多事情。

 man grep 

除了手册页之外,许多GNU工具还有一个信息页面 ,可能有更多有用的信息。

 info grep 

在“/some/file.txt”中search“17655”,在前后显示10行上下文(使用Awk),输出以行号开头,后跟冒号。 当'grep'不支持“ – [ACB]”选项时,在Solaris上使用它。

 awk ' /17655/ { for (i = (b + 1) % 10; i != b; i = (i + 1) % 10) { print before[i] } print (NR ":" ($0)) a = 10 } a-- > 0 { print (NR ":" ($0)) } { before[b] = (NR ":" ($0)) b = (b + 1) % 10 }' /some/file.txt;