-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.
6条答案
按热度按时间gjmwrych1#
-m
选项可能正是您所需要的:从
man grep
开始:注意:一旦找到指定数量的匹配项,grep将停止阅读文件!
fxnxkyjh2#
另一个选择是只使用head:
这并不需要搜索整个文件--当找到前10个匹配行时,它就会停止。这种方法的另一个优点是,即使您使用带有-o选项的grep,也不会返回超过10行的结果。
例如,如果文件包含以下行:
下面是输出中的差异:
使用
head
仅返回2个所需结果,而-m2返回3个。af7jpaap3#
Awk方法:
nwlqm0z14#
适用于2种使用情形:
1.我只想要n个整体结果,而不是每个文件n个结果,
grep -m 2
是每个文件的最大出现次数。1.我经常使用
git grep
,它不接受-m
在这些情况下,一个很好的替代方法是使用
grep | sed 2q
对所有文件中的前2个匹配项进行grep。sed文档:https://www.gnu.org/software/sed/manual/sed.htmll5tcr1uw5#
Emily的answer(2020年中期)提到:
我经常使用
git grep
,它不接受-m
。事实上,它确实如此(2022年年中):
在Git 2.38(Q3 2022)中,“
git grep -m<max-hits>
“(man)是一种限制每个文件显示点击次数的方式。这意味着当在Git仓库中完成时,
git grep -m
可以作为grep
的替代。参见Carlos López (
00xc
)的commit 68437ed(2022年6月22日)。(2022年7月13日,由Junio C Hamano --
gitster
--合并至commit 8c4f65e)我的天啊!add --max-count命令行选项
签署人:卡洛斯·洛佩斯00xc@protonmail.com
此修补程序添加了一个类似于GNU grep(1)的
-m
/--max-count
的命令行选项,用户可能已经习惯了。这使得限制输出中显示的匹配数量成为可能,同时保留其他选项(如
-C
(显示代码上下文)或-p
(显示包含函数))的功能,而这在使用shell管道(如head(1)
)时很难做到。git grep
现在在其手册页中包括:-m <num>
的第一个字符--max-count <num>
的第一个字符限制每个文件的匹配数量。
使用
-v
或--invert-match
选项时,搜索在达到指定的不匹配次数后停止。h7wcgrx36#
使用尾部: