我在搜索文件内容中的模式文件列表后,尝试显示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上执行此操作的任何想法?
答案 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行。