如何限制从grep返回的结果数?


179

我想说grep最多10行。

我不希望我的电脑辛苦工作。我希望它在grep找到10条结果后停止。可能吗?


在您的情况下,您不希望计算机工作困难。但是,如果这仅仅是人类可读性问题,则可以less通过管道使用。这将填满屏幕,您可以按ENTER键以查看更多行并q退出:grep "SomeText" somefile.csv | less
SilentSteel 2014年

Answers:


239

-m选项可能是您要寻找的:

grep -m 10 PATTERN [FILE]

来自man grep

-m NUM, --max-count=NUM
        Stop reading a file after NUM matching lines.  If the  input  is
        standard  input  from a regular file, and NUM matching lines are
        output, grep ensures that the standard input  is  positioned  to
        just  after the last matching line before exiting, regardless of
        the presence of trailing context lines.  This enables a  calling
        process  to resume a search.

注意:找到指定数量的匹配项后,grep将停止读取文件!


3
嗨,它试了一下,它基本上可以用,但是grep在发现前10行后似乎并没有停止思考,就像他继续思考并“使用我的cpu”一样,只是不是printint,这是正确的吗?thansk
Jas

6
@Jason:情况似乎并非如此:-m 1如果在我的笔记本电脑上有1000万行的文件中,grep需要0.005s,而没有1.579s。
格雷瓜尔

3
插入tail通常会起作用,但是如果您要弄乱上下文(例如grep -A10 PATTERN使用tail截断上下文而不是结果的数量),则分解尤其明显。这个答案就是我想要的。
dimo414

1
-m 10是grepping多个文件时有所不同的选项!如果第一个文件中的匹配项过多,则在后续文件中进行正面匹配不会显示匹配项。谢谢 !
朱利安

1
恕我直言,这应该标记为已接受的答案,因为它不需要其他工具。顺便说一句,当知道它是--max-count
ishahak
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.