grep一个文件,但显示几条周边线?
我想grep
一个string,还要显示前面的五行和下面的五行以及匹配的行。 我将如何能够做到这一点?
对于BSD或GNU 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;