2014-11-04 76 views
0

我试图在搜索文件内容中的模式文件列表后显示5行。我在MacOSX外壳上运行它。在grep搜索后显示n行

我试着这样做

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上执行此操作的任何想法?

+1

你能显示你的输入文件吗? – anubhava 2014-11-04 20:22:57

+0

这看起来好像是文件的内容。 – 2014-11-04 20:30:24

+0

@pogo:只有我们知道您的输入数据是什么,问题才会清楚。 – anubhava 2014-11-05 06:21:18

回答

0

如果你想grep从它的输出文件名省略时,它有多个输入文件,那么你应该使用-h选项(或者,如果你的grep的恰好是GNU的味道,你可以使用--no-filename代替)。

另外,-A5选项给出了(最多)每个匹配周围的5行上下文。如果这就是你想要的那么好,但它看起来也许是你想限制grep为5场比赛。如果每个文件最多只有5个,那么这将是-m5,或者如果您只需要5个,则将其编入head -5

0

这应该为你工作:

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

然而,如果你只想显示(1)共5条线路,请澄清,(2)每个文件5行,或每个图案后(3)5线比赛。我的答案适合最后一个,即每个模式匹配后的5行。