如何限制 grep 返回的结果数量?
我想说 grep 最多 10 行。
我不想让我的电脑工作太辛苦。我希望它在 grep 找到 10 个结果后停止。是否可以?
I would like to say 10 lines max from grep.
I don't want my computer to work hard. I want it to stop after 10 results found by grep. Is it possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
-m
选项可能就是您正在寻找的:来自
man grep
:注意:一旦找到指定数量的匹配项,grep 就会停止读取文件!
The
-m
option is probably what you're looking for:From
man grep
:Note: grep stops reading the file once the specified number of matches have been found!
另一种选择是仅使用 head:
这不需要搜索整个file - 当找到前十个匹配行时它将停止。这种方法的另一个优点是,即使您使用带 -o 选项的 grep,也将返回不超过 10 行。
例如,如果文件包含以下行:
那么这就是输出中的差异:
使用
head
仅根据需要返回 2 个结果,而 -m2 返回 3。Another option is just using head:
This won't require searching the entire file - it will stop when the first ten matching lines are found. Another advantage with this approach is that will return no more than 10 lines even if you are using grep with the -o option.
For example if the file contains the following lines:
Then this is the difference in the output:
Using
head
returns only 2 results as desired, whereas -m2 returns 3.awk的方法:
Awk approach:
对于 2 个用例:
git grep
,它不需要-m
在这些场景中一个很好的替代方案是
grep | sed 2q 来 grep 所有文件中的前 2 个匹配项。 sed 文档: https://www.gnu.org/software/sed/manual /sed.html
For 2 use cases:
grep -m 2
is per file max occurrence.git grep
which doesn't take-m
A good alternative in these scenarios is
grep | sed 2q
to grep first 2 occurrences across all files. sed documentation: https://www.gnu.org/software/sed/manual/sed.html艾米丽的答案(2020 年中)提到:
事实上,确实如此(2022 年中):
使用 Git 2.38(2022 年第 3 季度),“
git grep -m
"(man< /a>) 是一种限制每个文件显示的点击次数的方法。这意味着在 Git 存储库中完成时,
git grep -m
可以用作grep
的替代品。请参阅 提交 68437ed(2022 年 6 月 22 日),作者:卡洛斯·洛佩斯 (
00xc
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 8c4f65e,2022 年 7 月 13 日)git grep
现在包含在其 手册页:Emily's answer (mid-2020) mentions:
Actually, it does (mid-2022):
With Git 2.38 (Q3 2022), "
git grep -m<max-hits>
"(man) is a way to limit the hits shown per file.That means
git grep -m
can be used as an alternative togrep
when done in a Git repository.See commit 68437ed (22 Jun 2022) by Carlos López (
00xc
).(Merged by Junio C Hamano --
gitster
-- in commit 8c4f65e, 13 Jul 2022)git grep
now includes in its man page:使用尾部:
Using tail: