Shell 在grep搜索后显示n行
在搜索文件内容中某个模式的文件列表后,我试图显示这5行。我在MacOSX外壳上运行这个 我试过这么做Shell 在grep搜索后显示n行,shell,awk,grep,find,Shell,Awk,Grep,Find,在搜索文件内容中某个模式的文件列表后,我试图显示这5行。我在MacOSX外壳上运行这个 我试过这么做 grep -A5 'pattern' *.* 这里我得到以下输出 filename line1 filename line2 filename line3 filename line4 filename line5 但是,我只想将行作为输出,而不是文件名。我的理想输出是 文件名 line1 line2 line3 line4 line5 我也尝试了以下方法,但都不起作用 grep -l '
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' *.*
grep-l“模式”*.*head-5
头-5
您知道如何在shell上执行此操作吗?如果您希望
grep
在有多个输入文件时从其输出中省略文件名,那么您应该使用-h
选项(或者如果您的grep恰好是GNU风格的,您可以使用--no filename
)
另外,
-A5
选项在每个匹配周围提供(最多)5行上下文。如果这是您想要的,那么就很好了,但看起来您可能希望将grep
限制为5个匹配项。这将是-m5
,每个文件最多5个,或者如果您总共只想要5个,则将其导入头-5
。这应该适合您:
cat *.* | grep -A 5 'pattern'
但是,请澄清您是否只想显示(1)总共5行,(2)每个文件5行,或(3)每个模式匹配后5行。我的答案与最后一个答案相符,即每个模式匹配后5行。您能显示您的输入文件吗?这似乎就是文件的实际内容。@pogo:只有当我们知道您的输入数据是什么时,问题才会清楚。