在grep搜索后显示n行

时间:2014-11-04 20:20:10

标签: shell awk grep find

我在搜索文件内容中的模式文件列表后,尝试显示5行。我在MacOSX shell上运行它。

我试过这个

grep -A5 'pattern' *.*

这里我得到以下输出

filename
line1
filename
line2
filename
line3
filename
line4
filename
line5

但我只想将行作为输出而不是文件名。我的理想输出是 文件名

line1
line2
line3
line4
line5

我也尝试了以下但是它们没有用。

grep -l 'pattern' *.* | head -5
head -5 < grep -l 'pattern' *.*

关于如何在shell上执行此操作的任何想法?

2 个答案:

答案 0 :(得分:0)

如果您希望grep在有多个输入文件时从其输出中省略文件名,那么您应该使用-h选项(或者如果您的grep发生,则可以使用--no-filename是GNU的味道。)

此外,-A5选项为每个匹配提供(最多)5行上下文。如果那就是你想要的那么好又好,但看起来你可能想要将grep限制为5场比赛。对于每个文件最多5个,这将是-m5,如果您只需要5个整体,则将其传输到head -5

答案 1 :(得分:0)

这应该适合你:

cat *.* | grep -A 5 'pattern'

然而,请澄清是否要仅显示(1)总共5行,(2)每个文件5行,或(3)每个模式匹配后5行。我的答案适合最后一个,即每个模式匹配后的5行。