2014-11-04 90 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行。